在ASP.NET MVC Web中,HttpResponseMessage作为一个返回类型,能将状态码与数据以Json的格式一并返回给客户端,但是在ASP.NET Core Web中,貌似有些小问题。我在做接口测试时,总是得到如下返回结果(可能格式与你们的有些不一样,但大致就是这个意思),这是对 HttpResponseMessage 自己的 Json 序列化数据:
{
"Version": {
"Major": 1,
"Minor": 1,
"Build": -1,
"Revision": -1,
"MajorRevision": -1,
"MinorRevision": -1
},
"Content": {
"Headers": [
{
"Key": "Content-Type",
"Value": [
"text/plain"
]
}
]
},
"StatusCode": 200,
"ReasonPhrase": "OK",
"Headers": [
{
"Key": "Cache-Control",
"Value": [
"no-cache"
]
}
],
"RequestMessage": null,
"IsSuccessStatusCode": true
}
很明显,项目对HttpResponseMessage好像很不友好。
为此,我找出了解决办法:
【1】安装 Nuget 包 Microsoft.AspNetCore.Mvc.WebApiCompatShim(注意:选择Nuget版本时不能乱选,我项目的.NET Core版本是2.1,所以我选了Microsoft.AspNetCore.Mvc.WebApiCompatShim 2.1,如果.NET Core版本为2.0,那要选择Microsoft.AspNetCore.Mvc.WebApiCompatShim 2.0,否则会报错)
【2】在 Startup -> ConfigureServices 中,在 AddMvc() 之后添加 AddWebApiConventions() :
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddWebApiConventions();
}
再次使用Postman对该方法进行测试:
Obviously, the problem has been resolved.