Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么HttpWebResponse.ContentLength突然返回-1?_C#_.net_Httpwebresponse_Http Content Length - Fatal编程技术网

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

C# 为什么HttpWebResponse.ContentLength突然返回-1?,c#,.net,httpwebresponse,http-content-length,C#,.net,Httpwebresponse,Http Content Length,我们这里有一个特殊的问题。 我们在客户端有一个代码,可以使用HTTPWebResponse/HttpWebRequest从web服务器下载一些文件 我们正在使用HttpWebResponse.ContentLength获取文件的大小。。。 这些天来,它一直运转良好,但突然它开始出现-1 但是,当我们绕过服务器上的负载平衡器时,它可以工作。。 任何人都可以给出一个公平的想法,说明为什么会发生这种情况。ContentLength只报告服务器在Content Length标题中发送的内容。或者,如果服

我们这里有一个特殊的问题。 我们在客户端有一个代码,可以使用HTTPWebResponse/HttpWebRequest从web服务器下载一些文件 我们正在使用
HttpWebResponse.ContentLength
获取文件的大小。。。 这些天来,它一直运转良好,但突然它开始出现-1 但是,当我们绕过服务器上的负载平衡器时,它可以工作。。
任何人都可以给出一个公平的想法,说明为什么会发生这种情况。ContentLength只报告服务器在
Content Length
标题中发送的内容。或者,如果服务器没有发送任何内容,它可能会报告-1

不管是什么问题,都是服务器的问题,而不是HttpWebResponse的问题


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

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

不管是什么问题,都是服务器的问题,而不是HttpWebResponse的问题


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

来自MSDN的文档:

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


简单地说——服务器没有发送
内容长度
标题。

来自MSDN的文档:

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


简单地说,服务器没有发送
内容长度
标题。

谢谢Jim!我使用此内容长度获取文件的大小,以相应地更新进度条。。但是文件会被下载。。因此,我收到了服务器的响应。是的,服务器正在发送响应,但没有设置
内容长度
标题。我是否需要查看IIS以解决此问题?@Sathish:我不是IIS专家,因此我没有任何细节。您可以搜索[IIS内容长度负载平衡器],然后查看出现了什么。或者在superuser.com上发布一个问题。谢谢你,吉姆!我使用此内容长度获取文件的大小,以相应地更新进度条。。但是文件会被下载。。因此,我收到了服务器的响应。是的,服务器正在发送响应,但没有设置
内容长度
标题。我是否需要查看IIS以解决此问题?@Sathish:我不是IIS专家,因此我没有任何细节。您可以搜索[IIS内容长度负载平衡器],然后查看出现了什么。或者在superuser.com.Hi甜甜圈上发布问题。。但是服务器正在发送响应。。。在我的情况下,我可以从服务器下载文件。。但只有Content-Length属性返回-1@Sathish我知道响应的主体正在被发送,但是
内容长度
头是不同的(这就是服务器没有发送的内容)。因此,我应该如何解决这一问题。。服务器端或IIS设置是否有需要检查的内容。。但是服务器正在发送响应。。。在我的情况下,我可以从服务器下载文件。。但只有Content-Length属性返回-1@Sathish我知道响应的主体正在被发送,但是
内容长度
头是不同的(这就是服务器没有发送的内容)。因此,我应该如何解决这一问题。。是否需要检查服务器端或IIS设置