远程服务器返回错误:(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");