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 需要代理身份验证的主要内容,如果未能解决你的问题,请参考以下文章
HTTPS URL 的基本代理身份验证返回 HTTP/1.0 407 需要代理身份验证