Til*_*zen 7 .net c# authentication proxy credentials
如何将保存的代理设置和凭据用作HttpWebRequests的默认设置?可以访问和使用代理设置,但不能使用凭据:
IWebProxy proxy = WebRequest.GetSystemWebProxy();
proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
WebRequest.DefaultWebProxy = proxy;
Run Code Online (Sandbox Code Playgroud)
是否有使用凭据的权限?
它适用于通过NetworkCredential实例传递凭据:
proxy.Credentials = new NetworkCredential("username", "password");
Run Code Online (Sandbox Code Playgroud)
但我想使用操作系统/ IE中保存的那些.
编辑:
我正在使用第三方lib创建并调用应该通过代理传递的HttpWebRequests.这可能是问题的一部分吗?
使用带有此内容的App.Config文件也不起作用
<configuration>
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
</defaultProxy>
</system.net>
</configuration>
Run Code Online (Sandbox Code Playgroud)
也许两个星期前,我有同样的问题!HTTP 407错误.我尝试了两个建议,设置网络凭据并在app.config中添加默认代理行,但都没有工作.奇怪也是因为我在去年写的一个vb应用程序上没有这个问题做了完全相同的事情,去一个网站并下载源代码作为字符串.当我这样做的时候,我遇到了这个问题但是在App.config中添加了defaultProxy行了!奇怪的.
这就是我能够解决这个问题的方法.
我没有创建代理,我将默认的代理(从app.config中提取)分配给webRequest的代理属性.然后我确保"UseDefaultCredentials"设置为"true".
HttpWebRequest request = (HttpWebRequest.Create(m.Url) as HttpWebRequest);
request.Proxy = WebRequest.DefaultWebProxy;
request.UseDefaultCredentials = true;
Run Code Online (Sandbox Code Playgroud)
我将此添加到app.config(与上面的帖子相同).
<system.net>
<defaultProxy useDefaultCredentials="true"/>
</system.net>
Run Code Online (Sandbox Code Playgroud)
这是踢球者(我希望我能解释为什么这解决了我的问题).在我创建请求并为代理分配正确的凭据后......我必须创建一个cookie容器并将其分配给我的Web请求.说真的,我不知道为什么这解决了这个问题因为我以前没必要这样做.
CookieContainer cc = new CookieContainer();
request.CookieContainer = cc;
Run Code Online (Sandbox Code Playgroud)
我希望这可以帮助你.
这是完整的代码(减去app.config行):
HttpWebRequest request = (HttpWebRequest.Create(m.Url) as HttpWebRequest);
request.Proxy = WebRequest.DefaultWebProxy;
request.UseDefaultCredentials = true;
CookieContainer cc = new CookieContainer();
request.CookieContainer = cc;
HttpWebResponse response = (request.GetResponse() as HttpWebResponse);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6831 次 |
最近记录: |