WebApi返回序列化的HttpResponseMessage而不是text / html

时间:2018-08-27 16:53:28

标签: asp.net asp.net-web-api asp.net-web-api2

我一辈子都想不出来,因为如果我启动一个新的WebApi项目,那很好。但是在我现有的应用程序中,它的工作方式不同。我正在动态构建HTML并返回。代码如下:

var response = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent(some html goes here)
};
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
return response;

该代码的响应为(200 OK):

{
    "version": {
        "major": 1,
        "minor": 1,
        "build": -1,
        "revision": -1,
        "majorRevision": -1,
        "minorRevision": -1
    },
    "content": {
        "headers": [
            {
                "key": "Content-Type",
                "value": [
                    "text/html"
                ]
            }
        ]
    },
    "statusCode": 200,
    "reasonPhrase": "OK",
    "headers": [],
    "requestMessage": null,
    "isSuccessStatusCode": true
}

一些可能相关的配置:

config.Formatters.JsonFormatter.SerializerSettings.ContractResolver =new CamelCasePropertyNamesContractResolver();
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
config.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.None;
config.Formatters.JsonFormatter.UseDataContractJsonSerializer = false;
config.Formatters.Remove(config.Formatters.XmlFormatter);

该请求被配置为接受标准内容类型。

我已经阅读了一些有关创建自定义格式器的内容,但我认为不必担心在空白的Web API项目中返回HTML就可以了。我在想中间件或管道中的其他东西正在拦截对象并进行序列化。

  • .NET 4.6
  • NuGet Packges:Microsoft.AspNet.WebApi。*设置为5.2.5。
  • 这是我在本地环境中遇到的问题。

一如既往,我们将不胜感激。谢谢!

0 个答案:

没有答案