背景:我们在远程站点安装了一个服务,该服务已开始无法调用外部Web服务。根据网站上的网络\支持工程师,不需要代理,但在尝试执行WebRequest时会返回异常:
System.Net.WebException: The remote server returned an error: (407) Proxy Authentication Required.
异常是相对不言自明的,但是查看代码时,在调用WebRequest时没有指定Proxy,并且app.config文件中没有定义代理。
参考WebRequest.Proxy的MSDN文档:
“用于代理请求的IWebProxy对象。通过调用GlobalProxySelection.Select属性设置默认值。”
然后参考GlobalProxySelection.Select的文档:
“获取或设置全局HTTP代理。”
鉴于GlobalProxySelection.Select未在应用程序中的任何位置设置,默认值来自何处?还有其他全局配置文件可以设置全局HTTP代理吗?
答案 0 :(得分:0)
您必须手动设置代理。如果要使用默认系统代理,可以通过执行以下操作来执行此操作。 (Windows中的Internet设置)
myRequest.Proxy = WebRequest.GetSystemWebProxy();
您收到错误是因为您的网络在不使用代理的情况下直接阻止了对服务器的访问。
答案 1 :(得分:0)
虽然这不能直接解决您的问题,但我是否可以建议您使用<defaultProxy />
在<system.net>
下的app.config / web.config中尝试useDefaultCredentials="true"
元素 - 这可能会得到您的应用程序通过代理进行身份验证,因此根本不需要特殊的绕过规则。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<defaultProxy useDefaultCredentials="true" />
</system.net>
</configuration>