Asp.net web api没有设置内容长度标题

时间:2012-05-18 19:05:55

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

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

  1. 如何/在哪里我在web api中添加“Conetent-Length”http标头,以便IIS不会“响应”编码响应?
  2. 有没有办法在IIS 7.5中的站点/服务器级别禁用此编码?
  3. 当我从browser / fiddler访问服务时,我得到了正确的响应(xml / json)。我正在使用Json.net格式化程序。

2 个答案:

答案 0 :(得分:1)

使用

myHttpResponseMessage.Headers.TransferEncodingChunked = false;

关闭分块编码。

答案 1 :(得分:1)

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

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

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

由于在顶部按下了“解码”按钮,你很可能会在Fiddler中得到不同的结果,这会自动解除响应并从响应中删除传输编码标题。