c# - WebAPI 确保所有响应都自动进行 UTF8 编码,以避免不必要的反弹和引述

标签 c# asp.net-web-api asp.net-web-api2

我们都知道,默认情况下,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/

相关文章:

C# 控制台应用程序 : Main method return value VS Application. ExitCode

c# - 为什么 DropDownList.SelectedIndexChanged 事件没有触发?

c# - 具有空列表(零计数)的 OData 结果导致错误

c# - asp.net查询c#错误

c# - 如何使用 C# 比较两个列表?

security - 如何使用Web API限制DOS攻击

json - MVC4 : Include object name in Json

asp.net-web-api - 仅获取 odata expand 属性的计数

sql - ASP.NET Web API 数据库未在 localdb 中创建

c# - 带有 OWIN 的 webapi 中的复杂 JSON Web token 数组