C# .NETCore2.0WebAPI中的BSON

C# .NETCore2.0WebAPI中的BSON,c#,asp.net-web-api,asp.net-core,postman,bson,C#,Asp.net Web Api,Asp.net Core,Postman,Bson,我有一个.NET核心WebApi项目,我想在BSON中发送请求并获得响应 我安装并添加了 services.AddMvc().AddBsonSerializerFormatters(); 在ConfigureServices中的Startup.cs中 我还需要做什么吗 我在控制器中有测试方法: [HttpGet] public string GetTestBson() { return "test string bson"; } 我尝试使用Postman测试它,在标题中我有内容类型

我有一个.NET核心WebApi项目,我想在BSON中发送请求并获得响应

我安装并添加了

services.AddMvc().AddBsonSerializerFormatters(); 
ConfigureServices
中的Startup.cs中

我还需要做什么吗

我在控制器中有测试方法:

[HttpGet]
public string GetTestBson()
{
    return "test string bson";
}
我尝试使用Postman测试它,在标题中我有
内容类型:application/bson
但作为回应,我没有BSON。。。我有
“测试字符串bson”


我做错了什么?

提出请求时,需要将请求头设置为
Accept
,设置为
application/bson

Accept: application/bson
通过使用
Content-Type:application/bson
,您实际上是在说您发送的请求主体是bson,但由于这是一个GET请求,您实际上根本没有发送主体。使用
Accept:application/bson
表示希望在响应中返回bson

StackExchange网站管理员的这篇文章更详细地解释了
Accept
Content Type
之间的区别

除了此处需要的
Accept
标题外,您还需要从操作中返回对象或数组,否则BSON serialiser将失败并显示以下消息:

写入字符串值时出错。BSON必须以对象或数组开头。路径“”

要返回对象,可以执行以下操作:

[HttpGet]
public IActionResult GetTestBson()
{
    return Ok(new { Value = "test string bson" });
}

这将返回一个新的匿名类型,其属性为
——您不能将现有的
字符串
作为
对象
,因为BSON对象必须具有属性。

太好了!现在我在邮递员身上看到类似“…测试…字符串…bson…”的东西,我想可以吗?但是我可以得到hex值来检查它是否反过来工作吗?为了测试的目的,您可以使用类似的东西来从JSON转换为BSON。