2012-09-11 14 views
6

Próbuję zrobić Fiddler praca z RestSharp czarownica używa System.Http.WebProxy, więc chcę go ustawić na localhost:8888 lub 127.0.0.1:8888Jak sprawić, by System.Net.WebProxy nie ominął lokalnych adresów URL?

Oto kod:

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

Wyjścia: prawda

MSDN określa:

Metoda jest używana do określenia, czy należy ominąć serwer proxy podczas uzyskiwania dostępu do zasobu internetowego.

Właściwości BypassProxyOnLocal i BypassList kontrolują wartość zwracanej wartości metody IsBypassed.

IsBypassed powraca prawda pod którykolwiek z następujących warunków:

  • Jeśli BypassProxyOnLocal jest prawda i gospodarz jest lokalnym URI. Żądania lokalne są identyfikowane przez brak kropki (.) W identyfikatorze URI, tak jak w "http: // webserver /".

  • Jeśli host pasuje do wyrażenia regularnego w BypassList.

  • Jeśli adres ma wartość zerową.

wszystkich innych warunkach powrotu fałszywy.

Nie rozumiem, dlaczego w moim przypadku zwraca true, czy to błąd? Jak to działa? Dzięki!

Odpowiedz

6

To zakodowane zachowanie w realizacji biblioteki klienta HTTP w .NET Framework, odzwierciedlający zachowanie WinInet przed Internet Explorer 9.

Zobacz Monitor traffic to localhost from IE or .NET ze strony internetowej Fiddler wyjaśnia, w jaki sobie z tym poradzić.

+0

Jako lekką modyfikację tego, co sugeruje Fiddler: jeśli użyjesz 'oSession.hostname =" localhost "', to zachowa twój numer portu, zamiast zmienić go na 8081. –

+0

(Zwróć uwagę na użycie 'oSession.hostname' zamiast z 'oSession.host') –