我们都知道,默认情况下,WebAPI2 倾向于在 HttpResponseMessage
Content
消息中添加反斜杠和引号。
使用标准 Action 代码:
public HttpResponseMessage Test()
{
return this.Request.CreateResponse(HttpStatusCode.OK, "Hello World");
}
返回显示“Hello World”(带引号)的“\"Hello World\"”。
如果我更改 API 方法并添加编码:
public HttpResponseMessage Test()
{
return new HttpResponseMessage()
{
StatusCode = HttpStatusCode.OK,
Content = new StringContent("Hello World", System.Text.Encoding.UTF8, "application/json")
};
这解决了问题,因为 Content
结果变成了 Hello World 但只是用于 Test
方法。
很好,但这只解决了 Test
方法的问题,并未解决所有其他 API 方法的问题。
是否有一种简单而单一的方法可以同时为所有 Controller
操作添加 UTF8 编码?
最佳答案
你似乎不明白什么是编码。找出来,因为知道很重要。编码是一种将字符串转换为字节的方法。
世界上没有编码添加反斜杠和引号。 JSON 添加它们。 JSON 和 XML 一样是一种容器格式。
如果您不需要 JSON,请不要使用 JSON。您不需要指定 UTF8,因为它是默认值。字符串内容的默认。为自己编写一个帮助程序,以您喜欢的任何方式创建 HttpResponseMessage
。这样一来,您可以拥有任何您喜欢的复杂逻辑,并且仍然可以在一行中构建响应。
关于c# - WebAPI 确保所有响应都自动进行 UTF8 编码,以避免不必要的反弹和引述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25209448/