C# 407 需要代理身份验证

Posted

技术标签:

【中文标题】C# 407 需要代理身份验证【英文标题】:C# 407 Proxy Authentication Required 【发布时间】:2017-03-06 13:04:38 【问题描述】:

我想向资源发出请求(该资源位于代理后面)。我也有代理地址和端口。我试过NetworkCredentialn没有成功,CacheCredentials没有成功。 WebException 是:

协议错误 远程服务器返回错误:(407) Proxy Authentification Required

我总是在这一行出错:

WebResponse response = request.GetResponse();

我已经这样做了: Package manager in Visual Studio 2015 "407 (Proxy Authentication Required)"

我尝试配置我的 App.config 文件

 <?xml version="1.0" encoding="utf-8" ?>
 <configuration>
     <system.net>
         <defaultProxy useDefaultCredentials="true" />
     </system.net>
 </configuration>

【问题讨论】:

我假设这里的“请求”是一个 WebRequest?您是否设置了代理属性? msdn.microsoft.com/en-us/library/… 或 msdn.microsoft.com/en-us/library/… 在您传递的代理对象中,您可以设置使用代理进行身份验证的凭据。 【参考方案1】:

在我们的公司网络中,我们通常使用以下代码:

        WebProxy proxy = new WebProxy("http://your.proxy.server:8080", true);
        proxy.Credentials = new NetworkCredential("user", "password");
        WebRequest.DefaultWebProxy = proxy;

我们的想法是将此代码放在程序开头的某个位置(或者如果您在 IIS 上,则放在应用程序启动中),然后每个请求都将采用默认代理配置。

无需更改 web.config。 AFAICT,在 web.config 中您无法设置凭据。

根据我的经验,它也适用于 Web 服务和 WCF 通信。

【讨论】:

非常感谢您的回复,但我不想使用硬编码的登录名和密码,而是想使用用户的凭据。 显然你可以从任何你想要的地方读取这个设置(例如 web.config 中的 appsettings)。但问题是:代理设置对你有用吗? 是的,代理对我有用。当我从网络浏览器访问同一页面时,我完全没有问题。我唯一遇到的问题是当我尝试从我的 Win 表单访问该页面时。 我要问的是:如果此代码适用于硬编码值,那么您就可以确定要将它们存储在哪里。但问题是:如果您将此代码与硬编码值一起使用,它是否有效? 让我试试这个,我会回来的

以上是关于C# 407 需要代理身份验证的主要内容,如果未能解决你的问题,请参考以下文章

(407) 需要代理身份验证 - 基本身份验证

407 需要代理身份验证

HTTPS URL 的基本代理身份验证返回 HTTP/1.0 407 需要代理身份验证

在需要身份验证但不返回 407 的代理后面打开 http 连接

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

Firebug 控制台错误 HTTP 407 需要代理身份验证