删除过时的WebProxy.GetDefaultProxy()引用

时间:2009-07-10 22:39:32

标签: .net-2.0 proxy

我有一些令我烦恼的代码,因为它产生了过时的警告,但我担心删除它,因为:

a)有效吗

b)我没有写它

c)我目前没有测试方法。 (即我无法访问需要它的机器)

代码如下

System.Net.WebProxy proxyObject = System.Net.WebProxy.GetDefaultProxy();
proxyObject.Credentials = System.Net.CredentialCache.DefaultCredentials;
proxyObject.BypassProxyOnLocal = true;
System.Net.GlobalProxySelection.Select = proxyObject;

警告信息是

警告31'System.Net.GlobalProxySelection'已废弃:'此类已被弃用。请改用WebRequest.DefaultWebProxy来访问和设置全局默认代理。使用'null'而不是GetEmptyWebProxy。 http://go.microsoft.com/fwlink/?linkid=14202'

但是,如果我的理解是正确的,(并假设该程序试图访问的Web服务永远不会是本地的)我真正应该做的只是删除这四行?

这是正确的,还是错过了什么?

PS。我知道可能有#pragma选项忽略警告,但我真的不想沿着那条路走下去。

1 个答案:

答案 0 :(得分:3)

是的,我认为你是对的。

测试此问题的一个好方法是使用Fiddler,因为它所做的一件事(除了跟踪http请求之外)是自动将自己设置为IE代理。

如果您运行Fiddler,然后运行以下代码

 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://news.bbc.co.uk");
 //request.Proxy = null; // uncomment this to bypass the default (IE) proxy settings
 HttpWebResponse response = (HttpWebResponse)request.GetResponse();

 Console.WriteLine("Done - press return");
 Console.ReadLine();

你会看到代码中没有明确的代理覆盖(如“我真正应该做的只是删除这四行”),请求确实从IE中获取了全局默认代理,而你在Fiddler中查看您的请求。

仅当您取消注释空代理分配时,请求是否会绕过全局代理设置而不会出现在Fiddler中。

是的 - 我认为你是对的;对于默认代理,您可以删除显式代理代码。