我有一些令我烦恼的代码,因为它产生了过时的警告,但我担心删除它,因为:
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选项忽略警告,但我真的不想沿着那条路走下去。
答案 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中。
是的 - 我认为你是对的;对于默认代理,您可以删除显式代理代码。