How to make System.Net.WebProxy to not bypass loca

2019-06-17 04:35发布

I am trying to make Fiddler work with RestSharp witch uses System.Http.WebProxy, so I want it to be set to localhost:8888 or 127.0.0.1:8888

Here is the code:

    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);

Outputs: true

MSDN states the following:

The IsBypassed method is used to determine whether to bypass the proxy server when accessing an Internet resource.

The BypassProxyOnLocal and BypassList properties control the return value of the IsBypassed method.

IsBypassed returns true under any of the following conditions:

  • If BypassProxyOnLocal is true and host is a local URI. Local requests are identified by the lack of a period (.) in the URI, as in "http://webserver/".

  • If host matches a regular expression in BypassList.

  • If Address is null.

All other conditions return false.

I don't understand why in my case it returns true, is this a bug? How to make it work then? Thanks!

1条回答
Fickle 薄情
2楼-- · 2019-06-17 05:11

This is hard-coded behavior in the implementation of the HTTP client library in the .Net framework, mirroring the behavior of WinInet prior to Internet Explorer 9.

See Monitor traffic to localhost from IE or .NET from the Fiddler web site explains how to deal with it.

查看更多
登录 后发表回答