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 代理?

WebRequest.Proxy - 默认值是什么

您必须手动设置代理。 如果要使用默认系统代理,可以通过执行以下操作来执行此操作。 (窗口中的互联网设置)

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>