Cách sử dụng Fiddler để giám sát dịch vụ WCF


107

Tôi có một dịch vụ WCF chấp nhận một kiểu phức tạp và trả về một số dữ liệu. Tôi muốn sử dụng Fiddler để xem các yêu cầu đến dịch vụ trông như thế nào. Máy khách là ứng dụng bảng điều khiển .net sử dụng proxy tham chiếu Dịch vụ. Điều này có thể với Fiddler. Tôi mới sử dụng công cụ này và trước đây chỉ sử dụng nó để đăng dữ liệu với trình tạo yêu cầu.


4
Bản thân các dịch vụ theo dõi WCF khá tốt bao gồm một GUI đẹp để xem chúng. msdn.microsoft.com/en-us/library/ms751526.aspx
kenny

Câu trả lời:


148

Bạn cần thêm cái này vào web.config của mình

<system.net>
  <defaultProxy>
    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
  </defaultProxy>
</system.net>
  1. sau đó Khởi động Fiddler trên máy WEBSERVER.
  2. Nhấp vào Công cụ | Fiddler Options => Connections => điều chỉnh cổng là 8888. (cho phép điều khiển từ xa nếu bạn cần)
  3. Ok, sau đó từ menu tệp, nắm bắt lưu lượng truy cập.

Chỉ có vậy thôi, nhưng đừng quên xóa các dòng web.config sau khi đóng fiddler, vì nếu không nó sẽ gây ra lỗi.

Tham khảo: http://fiddler2.com/documentation/Configure-Fiddler/Tasks/UseFiddlerAsReverseProxy


1
Cảm ơn, điều đó thực sự đã giúp tôi quá. Sai lầm của tôi là không chỉ định http://địa chỉ proxy. Tất cả những thứ còn lại đều giống nhau, như bạn đã đề cập.
Johnny_D

1
Điều này không hiệu quả với tôi. Tình huống của tôi là: máy chủ là IIS7.5, máy khách là ứng dụng bảng điều khiển. tên máy tính của tôi đã làm việc cho tôi.
york

5
Cảm ơn, nó đã làm việc cho tôi. Bằng cách này, trong trường hợp của tôi, tôi đã cố gắng để giao khách hàng chụp WCF trên localhost , vì vậy ngoài việc bổ sung các thiết lập của bạn, nó cũng cần thiết để thay đổi URL từ http://localhost/abc.svcđếnhttp://HOSTNAME/abc.svc
cateyes

1
Vì một số lý do không hoạt động với tôi (tôi đang sử dụng dịch vụ web .svc). Cuối cùng, cách giải quyết của tôi là sử dụng catcher cho windows
ren

2
Tuyệt vời! Các đề nghị của @cateyes đã làm nó cho tôi
Alexander Derck

9

Fiddler lắng nghe các yêu cầu gửi đi thay vì các yêu cầu gửi đến, vì vậy bạn sẽ không thể giám sát tất cả các yêu cầu đến với dịch vụ của mình bằng cách sử dụng Fiddler.

Điều tốt nhất bạn sẽ nhận được với Fiddler là khả năng xem tất cả các yêu cầu khi chúng được tạo bởi Ứng dụng Console của bạn (giả sử rằng ứng dụng tạo ra các yêu cầu web thay vì sử dụng một số đường dẫn khác).

Nếu bạn muốn một công cụ mạnh hơn (nhưng khó sử dụng hơn) cho phép bạn theo dõi TẤT CẢ các yêu cầu gửi đến, bạn nên xem WireShark.

Biên tập

Tôi đứng sửa lại. Cảm ơn Eric Law đã đăng hướng dẫn để định cấu hình Fiddler thành một proxy ngược !


Cảm ơn bạn về thông tin. Tôi cần xem cấu trúc yêu cầu tương tự như trang mô tả cho các dịch vụ asmx. WCF dường như không có tùy chọn này.
Quadwwchs

9
Điều đó không hoàn toàn chính xác (và "quyền lực" là chủ quan, vì WireShark không thể thay đổi lưu lượng truy cập). Xem fiddler2.com/fiddler/help/reverseproxy.asp để biết thêm chi tiết về cách lắng nghe lưu lượng truy cập vào.
EricLaw

Eric - Tôi đề nghị bạn nêu điều đó trong một câu trả lời độc lập.
Cheeso

9

Chỉ gặp sự cố này, điều làm việc cho tôi là sử dụng localhost.fiddler:

 <endpoint address="http://localhost.fiddler/test/test.svc"
            binding="basicHttpBinding" 
            bindingConfiguration="customBinding" 
            contract="test" 
            name="customBinding"/>

6

Củng cố những lưu ý được đề cập trong nhận xét / câu trả lời cho một số trường hợp sử dụng.

Hầu hết, hãy xem http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureDotNETApp

  • Khởi động Fiddler trước ứng dụng của bạn
  • Trong ứng dụng bảng điều khiển, bạn có thể không cần chỉ định proxyaddress:

    <proxy bypassonlocal="False" usesystemdefault="True" />
  • Trong một ứng dụng web / một cái gì đó được lưu trữ trong IIS, bạn cần thêm proxyaddress:

    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" />
  • Khi .NET đưa ra yêu cầu (thông qua máy khách dịch vụ hoặc HttpWebRequest, v.v.) nó sẽ luôn bỏ qua proxy Fiddler cho các URL chứa localhost, vì vậy bạn phải sử dụng bí danh như tên máy hoặc tạo thành một thứ gì đó trong tệp 'máy chủ' của bạn (đó là lý do một cái gì đó giống như localhost.fiddlerhoặc http://HOSTNAMEhoạt động)
  • Nếu bạn chỉ định proxyaddress, bạn phải xóa nó khỏi cấu hình của mình nếu Fiddler không được bật hoặc bất kỳ yêu cầu nào mà ứng dụng của bạn đưa ra sẽ đưa ra một ngoại lệ như:

    Không thể thực hiện kết nối vì máy đích đã chủ động từ chối nó 127.0.0.1:8888

  • Đừng quên sử dụng các chuyển đổi cấu hình để xóa phần proxy trong sản xuất

4

Rất đơn giản, tất cả những gì bạn cần là thay đổi địa chỉ trong máy khách cấu hình: thay vì thay đổi 'localhost' thành tên máy hoặc IP


1

Điều này rất đơn giản nếu bạn có quyền kiểm soát ứng dụng đang gửi thông tin liên lạc. Tất cả những gì bạn cần làm là đặt HttpProxy trên lớp dịch vụ phía máy khách.

Tôi đã làm điều này, ví dụ, để theo dõi một ứng dụng khách dịch vụ web đang chạy trên điện thoại thông minh. Tôi đã đặt proxy trên kết nối phía máy khách đó thành IP / cổng của Fiddler, đang chạy trên PC trên mạng. Ứng dụng điện thoại thông minh sau đó đã gửi tất cả thông tin liên lạc đi của nó đến dịch vụ web, thông qua Fiddler.

Điều này đã hoạt động hoàn hảo.

Nếu ứng dụng khách của bạn là ứng dụng khách WCF, hãy xem phần Hỏi & Đáp này để biết cách đặt proxy.

Ngay cả khi bạn không có khả năng sửa đổi mã của ứng dụng phía máy khách, bạn vẫn có thể đặt proxy về mặt quản trị, tùy thuộc vào ngăn xếp dịch vụ web mà ứng dụng khách của bạn sử dụng.


1

Truy tìm / chẩn đoán WCF tiêu chuẩn

Nếu vì lý do nào đó mà bạn không thể khiến Fiddler hoạt động hoặc muốn ghi lại các yêu cầu theo cách khác, thì một tùy chọn khác là sử dụng chức năng theo dõi WCF tiêu chuẩn. Điều này sẽ tạo ra một tệp có trình xem đẹp.

Docs

Xem https://docs.microsoft.com/en-us/dotnet/framework/wcf/samples/tracing-and-message-logging

Cấu hình

Thêm phần sau vào cấu hình của bạn, đảm bảo c:\logstồn tại, xây dựng lại và đưa ra yêu cầu:

  <system.serviceModel>
    <diagnostics>
      <!-- Enable Message Logging here. -->
      <!-- log all messages received or sent at the transport or service model levels -->
      <messageLogging logEntireMessage="true"
                      maxMessagesToLog="300"
                      logMessagesAtServiceLevel="true"
                      logMalformedMessages="true"
                      logMessagesAtTransportLevel="true" />
    </diagnostics>
  </system.serviceModel>

  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Information,ActivityTracing"
        propagateActivity="true">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener"
        name="xml" />
    </sharedListeners>
    <trace autoflush="true" />
  </system.diagnostics>

0

Tôi đã sử dụng công cụ cá mập dây để giám sát các cuộc gọi dịch vụ từ ứng dụng ánh sáng bạc trong trình duyệt đến dịch vụ. thử liên kết cung cấp thông tin rõ ràng

Nó cho phép bạn theo dõi toàn bộ nội dung yêu cầu và phản hồi.


0

Tôi vừa thử câu trả lời đầu tiên từ Brad Rem và đến cài đặt này trong web.config trong BasicHttpBinding:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding bypassProxyOnLocal="False" useDefaultWebProxy="false" proxyAddress="http://127.0.0.1:8888" ...
        ...
      </basicHttpBinding>
    </bindings>
    ...
<system.serviceModel>

Hy vọng điều này sẽ giúp ai đó.


0

Bạn có thể sử dụng phiên bản Miễn phí của HTTP Debugger.

Nó không phải là proxy và bạn không cần thực hiện bất kỳ thay đổi nào trong web.config.

Ngoài ra, nó có thể hiển thị cả hai; các yêu cầu HTTP đến và đi. Trình gỡ lỗi HTTP miễn phí

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.