我在IIS 7上运行了一个asp.net mvc应用程序。我遇到的问题是,根据客户端的响应,可能会将响应(通过fiddler看到)视为“chunked transfer-encoding。”我不能理解为什么这只发生在我的一些客户身上(即使两台计算机在同一网络上使用相同的浏览器(IE 8)而不是每个人,反之亦然?
有人能解释一下吗?
对于此次更新很抱歉,但问题原因是用户如何到达服务器。如果用户通过vpn-connection连接到本地局域网,则将回避代理,否则将使用代理。这导致两种不同的结果。
答案 0 :(得分:2)
如果过早刷新输出流,则在服务器端启用分块编码。您是否有任何特定于用户代理的代码可能正在调用Flush()?
答案 1 :(得分:1)
所有HTTP / 1.1应用程序必须能够接收和解码“分块”传输编码
Transfer-Encoding: chunked
是为HTTP / 1.1定义的。你的一些客户是使用HTTP / 1.0甚至是(shudder)0.9吗?在这种情况下,服务器不得使用transfer-encoding,因为它不是协议的一部分。
虽然大多数现代客户端都了解HTTP / 1.1,但大多数客户在使用代理时都有降级到1.0的选项(由于历史原因 - 一些较旧的代理有错误的1.1实现)。因此,虽然浏览器可能理解1.1,但如果有指示,它可以请求1.0。
示例:MSIE 6+在“Internet选项”对话框中显示了此选项 - 选项卡Advanced
- HTTP 1.1 settings
- 复选框“Use HTTP 1.1
”和“Use HTTP 1.1 through proxy connections
”。
此外,没有为所有响应激活分块编码 - 通常服务器在未设置Content-Length时或在刷新输出缓冲区时将其打开。