2010-05-27 24 views
18

Chúng tôi đang trong quá trình thay thế ứng dụng dịch vụ Windows cũ (5+ năm) được xây dựng bằng VS2005 thực hiện cuộc gọi HTTP GET. Có một số điều khiến việc này khó khăn (như máy chủ web nằm trên mạng của khách hàng và chúng tôi không thể kết nối trực tiếp với mạng) và, thật không may, chúng tôi không muốn gỡ xuống hệ thống đang chạy để thay thế bằng WinForm phiên bản có thể được giám sát bởi Fiddler. Mã mới dường như đang làm mọi thứ một cách chính xác, nhưng, than ôi, nó không xác thực được.Có cách nào để cấu hình Fiddler để chặn các cuộc gọi HTTP từ một dịch vụ Windows không?

Có cách nào để định cấu hình Fiddler (2.2.9.1) để chặn các cuộc gọi HTTP từ dịch vụ Windows không?

Trả lời

34

Codeka cung cấp một đầu mối để giúp tôi đi đúng hướng. Các mảnh vẫn còn thiếu là làm thế nào để có được cấu hình proxy. Các <appname>.exe.config cần thiết để có một phần giống như thêm sau đây:

<system.net> 
     <defaultProxy enabled="true"> 
       <proxy proxyaddress="http://127.0.0.1:8888" bypassonlocal="False"/> 
     </defaultProxy> 
</system.net> 

Một khi điều này đã được thực hiện giao thông http dịch vụ của Windows bắt đầu chảy qua Fiddler.

+1

http://www.fiddler2.com/fiddler/help/hookup.asp#Q -DOTNET – EricLaw

+0

@Eric - Cảm ơn bạn đã đăng liên kết. Tôi thực sự đã nhìn thấy mục Hỏi đáp đó trong khi theo dõi đầu mối của Codeka. Nó không phải là ngay lập tức rõ ràng rằng nó áp dụng cho các dịch vụ Windows. –

+0

FWIW, nó không liên quan gì đến "Dịch vụ Windows" và mọi thứ cần làm với dịch vụ của bạn được viết bằng .NET. :-) – EricLaw

5

Fiddler chỉ hoạt động như một proxy HTTP, vì vậy nếu bạn có thể định cấu hình proxy trong dịch vụ của mình thì bạn có thể định cấu hình proxy để thực hiện Fiddler. Cho dù đó là điều khó có thể nói ...

Nếu điều đó không hiệu quả, bạn có thể thực hiện bằng cách chạy Fiddler trên máy tính thứ hai và định cấu hình để nghe trên cổng 80. Sau đó trên máy tính "thử nghiệm" của bạn tệp máy chủ của bạn để nó trỏ đến máy tính thứ hai thay thế. Giả sử dịch vụ web trên www.example.com, bạn thiết lập máy chủ thử nghiệm của mình để "www.example.com" trỏ tới máy tính thứ hai của bạn (chạy Fiddler). Sau đó, khi dịch vụ kết nối với "www.example.com", nó sẽ thực sự là kết nối với Fiddler. Sau đó Fiddler sẽ chuyển kết nối đến thực www.example.com sau khi ghi lại yêu cầu/phản hồi.

Tôi chưa thử nghiệm ở trên, nhưng tôi nghĩ nó sẽ hoạt động. Rõ ràng, nếu bạn có thể cấu hình các thiết lập proxy trong dịch vụ của bạn sẽ dễ dàng hơn!

3

Và, tất nhiên, nếu Fiddler không hoạt động, luôn có Wireshark. Như một gợi ý, hãy sử dụng một vài bộ lọc trong Wireshark (ví dụ: chỉ hiển thị các gói đi hoặc đến từ IP đích) để tránh cảm giác như bạn đang bị tràn ngập dữ liệu.

2

Khi .NET bỏ qua proxy cho localhost và 127.0.0.1, chỉ cần hardcode tên máy của bạn thay cho url bạn đang thử nghiệm.

//myUrl = "http://127.0.0.1/myservice"; 
myUrl = "http://mymachine/myservice"; 
-1

Lưu ý: Quan trọng: Bất kể cài đặt nào khác, .NET sẽ luôn bỏ qua proxy Fiddler cho các URL chứa máy chủ cục bộ. Vì vậy, thay vì sử dụng localhost, hãy thay đổi mã của bạn để tham chiếu đến tên máy. Ví dụ:

URL này sẽ không xuất hiện trong Fiddler:

http://localhost/X509SignCodeService/X509SigningService.asmx URL này sẽ xuất hiện trong Fiddler:

Các vấn đề liên quan