2012-09-11 41 views
6

Tôi cố gắng để làm cho Fiddler làm việc với RestSharp phù thủy sử dụng System.Http.WebProxy, vì vậy tôi muốn nó được thiết lập để localhost:8888 hoặc 127.0.0.1:8888Làm thế nào để System.Net.WebProxy không bỏ qua url cục bộ?

Đây là mã:

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

Đầu ra: đúng

MSDN nêu rõ:

Phương thức IsBypassed được sử dụng để xác định xem có bỏ qua máy chủ proxy khi truy cập tài nguyên Internet hay không.

Thuộc tính BypassProxyOnLocal và BypassList kiểm soát giá trị trả về của phương thức IsBypassed.

IsBypassed lợi nhuận đúng dưới bất kỳ các điều kiện sau:

  • Nếu BypassProxyOnLocal là đúngchủ là một URI địa phương. Yêu cầu địa phương được xác định bằng cách thiếu khoảng thời gian (.) Trong URI, như trong "http: // webserver /".

  • Nếu máy chủ lưu trữ khớp với cụm từ thông dụng trong BypassList.

  • Nếu địa chỉ rỗng.

Tất cả các điều kiện khác trả lại false.

Tôi không hiểu tại sao trong trường hợp của tôi trả về đúng, đây có phải là lỗi không? Làm thế nào để làm cho nó hoạt động sau đó? Cảm ơn!

Trả lời

6

Đây là mã hóa cứng hành vi trong việc thực hiện của thư viện HTTP client trong khuôn khổ Net, phản ánh hành vi của WinInet trước khi Internet Explorer 9.

Xem Monitor traffic to localhost from IE or .NET từ trang web Fiddler giải thích cách để đối phó với nó.

+0

Như một sửa đổi nhỏ cho những gì Fiddler đề xuất: nếu bạn sử dụng 'oSession.hostname =" localhost "' thì nó sẽ duy trì số cổng của bạn thay vì thay đổi thành 8081. –

+0

(Lưu ý cách sử dụng 'oSession.hostname' thay thế của 'oSession.host') –