远程服务器返回错误:(407)需要代理validation
我在调用Web服务时遇到此错误:
“远程服务器返回一个错误:(407)代理validation必需”。
我得到了一般的想法,我可以通过添加代码来工作
myProxy.Credentials = NetworkCredential("user", "password", "domain");
或者在代码中使用DefaultCredentials。 我的问题是,这个Web服务的调用在没有这个的情况下在生产环境中工作。
似乎有一个涉及Machine.config的非代码解决scheme,但它是什么? 此刻,我无法进入生产框的machine.config文件,看看是什么样子。 我试图更新我的machine.config如下,但我仍然得到了407错误。
<system.net> <defaultProxy enabled="true" useDefaultCredentials="true"> <bypasslist> <clear /> </bypasslist> <proxy proxyaddress="myproxy:9000" usesystemdefault="false" bypassonlocal="true" autoDetect="False" /> </defaultProxy> </system.net>
只需将其添加到configuration
<system.net> <defaultProxy useDefaultCredentials="true" > </defaultProxy> </system.net>
在以下代码中,我们不需要对凭证进行硬编码。
service.Proxy = WebRequest.DefaultWebProxy; service.Credentials = System.Net.CredentialCache.DefaultCredentials; ; service.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
请咨询您的防火墙专家。 他们打开PROD服务器的防火墙,因此不需要使用代理服务器。
感谢您的提示帮助我解决了我的问题:
必须在两个位置设置证书才能通过407错误:
HttpWebRequest webRequest = WebRequest.Create(uirTradeStream) as HttpWebRequest; webRequest.Proxy = WebRequest.DefaultWebProxy; webRequest.Credentials = new NetworkCredential("user", "password", "domain"); webRequest.Proxy.Credentials = new NetworkCredential("user", "password", "domain");
瞧!
prod中的机器或web.config可能在configuration中有设置; 你可能不需要代理标签。
<system.net> <defaultProxy useDefaultCredentials="true" > <proxy usesystemdefault="False" proxyaddress="http://<ProxyLocation>:<port>" bypassonlocal="True" autoDetect="False" /> </defaultProxy> </system.net>
HttpWebRequest webRequest = WebRequest.Create(uirTradeStream) as HttpWebRequest; webRequest.Proxy = WebRequest.DefaultWebProxy; webRequest.Credentials = new NetworkCredential("user", "password"); webRequest.Proxy.Credentials = new NetworkCredential("user", "password");
这是成功的。
我有一个类似的代理相关的问题。 在我的情况下,这足以补充:
webRequest.Proxy.Credentials = new NetworkCredential("user", "password", "domain");