为什么HttpWebResponse.ContentLength突然返回-1?

时间:2013-03-15 13:09:26

标签: c# .net httpwebresponse http-content-length

我们这里有一个奇怪的问题。 我们在客户端有一个代码,使用HTTPWebResponse / HttpWebRequest从Web服务器下载一些文件 我们使用HttpWebResponse.ContentLength来获取文件的大小... 所有这些天它工作正常但突然开始给-1 但是,当我们绕过服务器上的负载均衡器时,它可以工作.. 任何人都可以对这可能发生的原因给出一个公平的想法

2 个答案:

答案 0 :(得分:2)

HttpWebResponse.ContentLength只报告服务器在Content-Length标头中发送的内容。或者,如果服务器没有发送任何内容,它可能会报告-1。

无论问题是什么,都是服务器,而不是HttpWebResponse

由于您说如果禁用负载均衡器问题就会消失,我怀疑至少有一台被负载均衡器激活的服务器没有设置标头。

答案 1 :(得分:2)

来自MSDN的HttpWebResponse.ContentLength property上的文档:

  

如果未在响应中设置Content-Length标头,则ContentLength将设置为值-1。

简单地说 - 服务器没有发送Content-Length标题。