0

背景:我们在远程站点安装了一项服务,该服务开始无法调用外部 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 的文档:

“获取或设置全局 HTTP 代理。”

并且鉴于 GlobalProxySelection.Select 没有在应用程序的任何地方设置,默认值从何而来?还有其他可以设置全局 HTTP 代理的全局配置文件吗?

4

2 回答 2

0

虽然这不能直接解决您的问题,但我可以建议<defaultProxy />您在 app.config / web.config 下尝试一个元素<system.net>-useDefaultCredentials="true"这很可能让您的应用程序通过代理进行身份验证,因此根本不需要特殊的绕过规则。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.net>
    <defaultProxy useDefaultCredentials="true" />
  </system.net>
</configuration>
于 2012-08-02T23:08:14.330 回答
0

您必须手动设置代理。如果您想使用默认系统代理,您可以执行以下操作。(Windows 中的 Internet 设置)

myRequest.Proxy = WebRequest.GetSystemWebProxy();

您收到错误是因为您的网络在不使用代理的情况下直接阻止了对服务器的访问。

于 2012-05-30T01:17:38.720 回答