如何从WebRequest中删除代理并保持DefaultWebProxy不变

Ele*_*tik 15 .net c#

我使用FtpWebRequest做一些FTP的东西,我需要直接连接(没有代理).但是WebRequest.DefaultWebProxy包含IE代理设置(我估计).

WebRequest request = WebRequest.Create("ftp://someftpserver/");
// request.Proxy is null here so setting it to null does not have any effect
WebResponse response = request.GetResponse();
// connects using WebRequest.DefaultWebProxy
Run Code Online (Sandbox Code Playgroud)

我的代码是一个巨大的应用程序中的一块,我不想改变,WebRequest.DefaultWebProxy因为它是全局静态属性,它可能会对应用程序的其他部分产生负面影响.

知道怎么做吗?

Ala*_*tts 26

尝试将代理设置为空的WebProxy,即:

request.Proxy = new WebProxy();
Run Code Online (Sandbox Code Playgroud)

这应该创建一个空代理.

  • 值得注意的是,[MSDN 文档](https://msdn.microsoft.com/en-us/library/czdt10d3(v=vs.110).aspx) 表示使用 GlobalProxySelection.GetEmptyWebProxy() 来获取空代理。但如果你尝试这个,Visual Studio 会通知你 `GlobalProxySelection` 类已过时,你应该使用 `WebRequest.DefaultWebProxy` 来代替......这正是 OP **不**想要的。 (2认同)

dr.*_*vil 9

实际上将其设置为null也足以禁用自动代理检测,您可能会节省一些周期:)

request.Proxy = null;
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-us/library/fze2ytx2.aspx