【问题标题】:Asp.net web api not setting content length headerAsp.net web api未设置内容长度标头
【发布时间】:2012-05-26 08:50:43
【问题描述】:

我正在使用 web api 构建一个 RESTful 服务。我的客户端是一个 HTML5/Jquery 应用程序。该服务和应用程序在 IIS 5.1 上完美运行。但是当我切换到 IIS 7.5 时,我看到响应包含一个 Transfer-Encoding: chunked header 并且我的客户端不理解/呈现 UI 元素(顺便说一句,这个 HTML 5/JQuery 的东西是由第三方完成的,我不想要更改他们的代码。我为什么要这样做?毕竟,在我们迁移到 IIS 7.5 之前它运行良好)。我的问题是:

  1. 如何/在哪里在 web api 中添加“内容长度”http 标头,以便 IIS 不会“分块”编码响应?
  2. 有没有办法在 IIS 7.5 的站点/服务器级别禁用此编码?

当我从浏览器/提琴手访问服务时,我得到了正确的响应(xml/json)。我正在使用 Json.net 格式化程序。

【问题讨论】:

    标签: rest asp.net-mvc-4 asp.net-web-api iis-7.5


    【解决方案1】:

    使用

    myHttpResponseMessage.Headers.TransferEncodingChunked = false;
    

    关闭分块编码。

    【讨论】:

      【解决方案2】:

      这可能是由于这个在测试后修复的错误:

      “DevDiv 388456 - 当内容长度已知时,WebHost 不应使用分块传输编码” http://aspnetwebstack.codeplex.com/SourceControl/changeset/changes/06f52b894414#src%2fSystem.Web.Http.WebHost%2fHttpControllerHandler.cs

      设置 response.Headers.TransferEncodingChunked = false;没有为我解决这个问题。

      此外,由于在顶部按下“解码”按钮,您很可能会在 Fiddler 中获得不同的结果,该按钮会自动对响应进行解块并从响应中删除传输编码标头。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-07
        • 1970-01-01
        • 2014-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多