我一辈子都想不出来,因为如果我启动一个新的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就可以了。我在想中间件或管道中的其他东西正在拦截对象并进行序列化。
一如既往,我们将不胜感激。谢谢!