为什么HttpWebResponse.ContentLength突然返回-1?
问题描述:
我们在这里有一个奇怪的问题。 我们有一个代码在客户端使用HTTPWebResponse/HttpWebRequest从网络服务器下载一些文件我们使用HttpWebResponse.ContentLength
来获得文件的大小... 所有这些日子它工作正常,但突然它开始给 - 1 然而,当我们绕过它工作在服务器上的负载均衡.. 谁能请提供关于为什么这可能发生为什么HttpWebResponse.ContentLength突然返回-1?
答
HttpWebResponse.ContentLength
刚刚报告的是服务器在Content-Length
头发送一个公平的想法。或者,如果服务器没有发送任何内容,它可能会报告-1。
无论问题出在哪里,它都是在服务器上,而不是在HttpWebResponse
上。
既然您说如果禁用负载均衡器,问题就会消失,那么我会怀疑负载均衡器激活的服务器中至少有一个未设置标题。
答
从MSDN的文档上HttpWebResponse.ContentLength
property:
如果的ContentLength头没有在响应中设置,的ContentLength被设置为值-1。
简而言之 - 服务器不发送Content-Length
标头。
谢谢吉姆!我用这个内容长度来获取文件的大小来相应地更新进度条..但是文件被下载..所以我得到了服务器的响应.. – SSK 2013-03-15 13:29:06
是的,服务器发送响应,但不是设置“Content-Length”标题。 – 2013-03-15 13:31:11
是否有需要查看IIS修复此问题? – SSK 2013-03-15 13:31:49