C# 如何使System.Net.WebProxy不绕过本地URL?

C# 如何使System.Net.WebProxy不绕过本地URL?,c#,.net,proxy,restsharp,webproxy,C#,.net,Proxy,Restsharp,Webproxy,我正在尝试使用witch usesSystem.Http.WebProxy,因此我希望将其设置为localhost:8888或127.0.0.1:8888 代码如下: var webProxy = new WebProxy(new Uri("http://127.0.0.1:8888")) { BypassProxyOnLocal = false }; var bypassed = webProxy.IsBypassed(ne

我正在尝试使用witch uses
System.Http.WebProxy
,因此我希望将其设置为
localhost:8888
127.0.0.1:8888

代码如下:

    var webProxy = new WebProxy(new Uri("http://127.0.0.1:8888"))
    {
        BypassProxyOnLocal = false
    };

    var bypassed = webProxy.IsBypassed(new Uri("http://127.0.0.1"));
    Console.WriteLine(bypassed);
输出:true

MSDN声明如下:

IsBypassed方法用于确定是否绕过代理 访问Internet资源时使用服务器

BypassProxyOnLocal和BypassList属性控制返回 方法的值被绕过

IsBypassed在下列任一情况下返回true

  • 如果BypassProxyOnLocal为true且主机为本地URI。本地请求 通过URI中缺少句点(.)来标识,如 "http://webserver/“

  • 如果主机与BypassList中的正则表达式匹配

  • 如果地址为空

所有其他条件返回false

我不明白为什么在我的例子中它返回true,这是一个bug吗?那么如何让它工作呢?谢谢

这是.Net framework中HTTP客户端库实现中的硬编码行为,反映了Internet Explorer 9之前的WinInet行为


Fiddler网站上的See解释了如何处理此问题。

作为对Fiddler建议的一个轻微修改:如果您使用
oSession.hostname=“localhost”
,则它将保留您的端口号,而不是将其更改为8081。(注意使用
oSession.hostname
而不是
oSession.host