以下代码适用于我:
var webProxy = WebProxy.GetDefaultProxy(); webProxy.UseDefaultCredentials = true; WebRequest.DefaultWebProxy = webProxy;
不幸的是,WebProxy.GetDefaultProxy()
已被弃用.我还应该做什么?
(在部署中不允许使用app.config设置defaultProxy设置)
对于那些谁,不像布莱恩Genisio,都可以设置自己的应用程序的配置文件中的内容: -不要做任何代码.而是将其添加到app.config/web.config中.
确实,使用默认凭据的默认值应为"true"; 我看到这个问题让很多人感到困惑 - 开发人员,用户,IT人员.
有关详细信息,请参阅此处: - http://sticklebackplastic.com/post/2007/01/26/Poxy-proxies.aspx
更新:我已经为Microsoft创建了这个问题/想法,将useDefaultCredentials的默认值从false更改为true,以便整个问题消失,.NET应用程序"正常工作"; 如果您同意,请将其投票:http:
//visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2397357-fix-it-so-that-net-apps-can-access-http-thru- AUTH
从.NET 2.0开始,您不需要这样做.如果未在Web请求上显式设置Proxy属性,则它使用静态WebRequest.DefaultWebProxy的值.如果要更改所有后续WebRequests使用的代理,可以设置此静态DefaultWebProxy属性.
WebRequest.DefaultWebProxy的默认行为是使用Internet Explorer使用的相同基础设置.
如果您想为当前用户使用不同的代理设置,则需要进行编码
WebRequest webRequest = WebRequest.Create("http://stackoverflow.com/"); webRequest.Proxy = new WebProxy("http://proxyserver:80/",true);
要么
WebRequest.DefaultWebProxy = new WebProxy("http://proxyserver:80/",true);
您还应该记住,代理的对象模型包括代理可以根据目标主机名而不同的概念.在调试和检查webRequest.Proxy的属性时,这可能会使事情有点混乱.呼叫
webRequest.Proxy.GetProxy(new Uri("http://google.com.au"))
查看将使用的代理服务器的实际详细信息.
关于您是否可以设置webRequest.Proxy
或WebRequest.DefaultWebProxy = null
阻止使用任何代理,似乎存在争议.这对我来说似乎没问题,但你可以将它设置为new DefaultProxy()
没有参数来获得所需的行为.另一件需要检查的事情是,如果应用程序配置文件中存在代理元素,.NET Framework将不会使用Internet Explorer中的代理设置.
MSDN杂志文章"在.NET中使用自动配置减轻用户负担"提供了有关内幕发生情况的更多详细信息.
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
这将强制DefaultWebProxy
使用默认凭据,类似于通过完成的效果UseDefaultCredentials = true
.
因此,所有新创建的WebRequest
实例都将使用已配置为使用代理的默认凭据的默认代理.