我使用HTTPWebRequest和代理。我注意到,如果我将KeepAlive设置为true,那么我会得到一个407禁止的异常,当我将其设置为false时,它会起作用。为什么在使用代理时需要将KeepAlive设置为false?
我只是想知道这是为什么?
我使用HTTPWebRequest和代理。我注意到,如果我将KeepAlive设置为true,那么我会得到一个407禁止的异常,当我将其设置为false时,它会起作用。为什么在使用代理时需要将KeepAlive设置为false?
我只是想知道这是为什么?
因为对代理执行keepalive是无意义的带宽浪费。这听起来像你的特定代理服务器足够聪明,通过发出“407”错误响应来保护自己。
PS: 错误实际上是
(407)代理身份验证
如果您的代理是HTTP标准,没有理由设置的KeepAlive为false,除非你的代理要求NTLM身份验证。
要使NTLM身份验证成功,您需要保持连接。看起来你正在经历这样一个代理,这就是为什么当启用保持活动时它以407失败。
不完全。如果您使用MS NTLM身份验证,则某些客户端(例如IE 5或6)可能会“发送无关的NTLM请求”,从而生成“407:需要代理身份验证”响应。此问题以及解决方法在此处进行讨论:http://support.microsoft.com/kb/312176 – paulsm4
您引用的支持文章仅适用于IE/Wininet。问题是关于不使用Wininet的HttpWebRequest,除非我们在这里讨论Silverlight场景。 – feroze