远程服务器返回错误:(407)需要代理身份验证

chr*_*ris 70 .net c# proxy-authentication machine.config http-status-code-407

我在调用Web服务时遇到此错误:

"远程服务器返回错误:(407)需要代理验证".

我得到了一般的想法,我可以通过添加来获得代码

myProxy.Credentials = NetworkCredential("user", "password", "domain");
Run Code Online (Sandbox Code Playgroud)

或者在代码中使用DefaultCredentials.我的问题是,没有这个,对Web服务的调用在生产中工作.

似乎有一个涉及Machine.config的非代码解决方案,但它是什么?目前我无法访问生产盒的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>
Run Code Online (Sandbox Code Playgroud)

Seç*_*gay 132

只需将此添加到配置

<system.net>
    <defaultProxy useDefaultCredentials="true" >
    </defaultProxy>
</system.net>
Run Code Online (Sandbox Code Playgroud)

  • 太糟糕了,这没有标记为答案.它应该是. (5认同)
  • 最佳答案,使其成为配置细节而不是代码问题. (3认同)
  • 这个解析我的问题.谢谢! (2认同)

Rom*_*ain 53

在以下代码中,我们不需要对凭据进行硬编码.

service.Proxy = WebRequest.DefaultWebProxy;
service.Credentials = System.Net.CredentialCache.DefaultCredentials; ;
service.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
Run Code Online (Sandbox Code Playgroud)


小智 19

请咨询您的防火墙专家.他们为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");
Run Code Online (Sandbox Code Playgroud)

瞧!


Osc*_*ero 6

prod中的机器或web.config可能在配置中有设置; 你可能不需要代理标签.

<system.net>
    <defaultProxy useDefaultCredentials="true" >
        <proxy usesystemdefault="False"
               proxyaddress="http://<ProxyLocation>:<port>"
               bypassonlocal="True"
               autoDetect="False" />
    </defaultProxy>
</system.net>
Run Code Online (Sandbox Code Playgroud)