WebAPI确保所有响应都自动进行UTF8编码,以避免不必要的Backlash&行情

时间:2014-08-08 17:55:35

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

我们都知道默认情况下,WebAPI2会向HttpResponseMessage Content消息添加反斜杠和引号。

使用标准操作代码:

    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编码?

1 个答案:

答案 0 :(得分:4)

您似乎不了解编码是什么。找出因为重要的是要知道。编码是一种将字符串转换为字节的方法。

世界上没有编码添加反斜杠和引号。 JSON添加它们。 JSON是一种像XML一样的容器格式。

如果您不想要JSON,请不要使用JSON。您不需要指定UTF8,因为它是默认值。字符串内容的默认 。给自己写一个帮助,以任何你喜欢的方式创建HttpResponseMessage。这样你就可以拥有任何你喜欢的复杂逻辑,并且仍然可以在一行中构建一个响应。