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