2010-03-11 34 views
6

Tôi có ứng dụng dịch vụ WCF và trong ứng dụng này tôi đang thực hiện cuộc gọi đến dịch vụ web của bên thứ ba qua kết nối an toàn.WCF - Xem yêu cầu xml/phản hồi tới dịch vụ web an toàn

Tôi đã cố gắng xem các luồng phản hồi yêu cầu bằng cách sử dụng trình duyệt nhưng tôi đã từ bỏ nó sau khi thử hơn nửa ngày áp dụng tất cả những gì tôi có thể tìm thấy trên internet. Nó có một vấn đề với chứng chỉ eventhough tôi đã làm giấy chứng nhận fiddlers nhiều hơn để khu vực đáng tin cậy.

Đặt cược tốt nhất của tôi để chỉ xem các yêu cầu và phản hồi xml mà tôi đang thực hiện cho dịch vụ web của bên thứ ba này là gì?

Tôi đang sử dụng các lớp proxy được tạo nên tôi hiện không có quyền truy cập vào xml thô mà tôi đang gửi và nhận lại. Tôi tò mò nếu tôi làm phức tạp hơn một cái gì đó mà có thể được thực hiện đơn giản hơn nhiều. Đây là máy phát triển của tôi và tôi có quyền truy cập vào khá nhiều thứ, không hạn chế.

Cách đơn giản để thực hiện việc này?

CHỈNH SỬA:

Tại thời điểm này, tôi thậm chí không cần sử dụng Theo dõi. Tôi chỉ cần xem đầu ra được tuần tự hóa của yêu cầu/phản hồi của tôi. Ngay cả khi tôi có thể làm điều này từ trình gỡ lỗi Visual Studio hoặc như vậy Nó sẽ giúp đỡ.

Trả lời

4

Vì tôi đang cố gắng đọc thông điệp xà phòng đến và từ dịch vụ web asmx được tham chiếu đến ứng dụng WCF của tôi, giải pháp cho vấn đề của tôi là tạo một lớp kế thừa từ System.Web.Services.Protocols.SoapExtension , đăng ký lớp này trong web.config để tất cả lưu lượng truy cập được định tuyến thông qua lớp này và được xem.

Không thông báo nào trong số này sẽ hiển thị trên các dấu vết WCF để không đủ. Tuy nhiên nó đã được hữu ích mà tôi đã học nó vì vậy bây giờ tôi có thể nhìn thấy tất cả những gì đang xảy ra giữa các ứng dụng dịch vụ wcf của tôi và ứng dụng web ..

Bài viết này đóng đinh nó cho tôi how-to-capture-soap-envelopes-when-consuming-a-web-service

+0

Điều này rất tiện dụng, cảm ơn mẹo Kaivalya. –

+4

Liên kết không hoạt động đối với tôi, nhưng điều này đã làm: http://blog.encoresystems.net/articles/how-to-capture-soap-envelopes-when-consuming-a-web-service.aspx – galets

2

Thêm phần này vào app.config của bạn:

<system.diagnostics> 
<sources> 
    <source name="System.ServiceModel.MessageLogging"> 
    <listeners> 
     <add name="messages" type="System.Diagnostics.XmlWriterTraceListener" initializeData="messages.svclog" /> 
    </listeners> 
    </source> 
</sources> 

<system.serviceModel> 
<diagnostics> 
    <messageLogging 
     logEntireMessage="true" 
     logMalformedMessages="true" 
     logMessagesAtServiceLevel="true" 
     logMessagesAtTransportLevel="false" 
     maxMessagesToLog="-1"/> 
</diagnostics> 

Nó sẽ ghi lại tất cả các tin nhắn đến messages.svclog. Sau đó, bạn có thể xem chúng.

7

Sử dụng WCF Tracing - hoạt động rất tốt và đi kèm với tiện dụng trace viewer utility.

Bạn có thể thiết lập vô số lựa chọn - nhưng cốt lõi của nó, bạn sẽ có thêm một cái gì đó như thế này để phục vụ và khách hàng WCF bạn configs:

<configuration> 
    <system.diagnostics> 
     <sources> 
      <source name="System.ServiceModel" 
        switchValue="Information, ActivityTracing" 
        propagateActivity="true"> 
      <listeners> 
       <add name="traceListener" 
        type="System.Diagnostics.XmlWriterTraceListener" 
        initializeData= "c:\log\Traces.svclog" /> 
      </listeners> 
     </source> 
     </sources> 
    </system.diagnostics> 
</configuration> 

Có một loạt các "thính giả theo dõi" ra của hộp - ghi vào giao diện đầu ra trong Visual Studio, cái này ở đây là tạo tệp XML hoặc bạn có thể lưu trữ nội dung trong bảng cơ sở dữ liệu SQL Server - và toàn bộ cơ chế có thể mở rộng, bạn có thể viết trình theo dõi của riêng mình !

Cũng xem tại đây: Using of WCF Trace và tại đây WCF Tracing FAQ để biết thêm thông tin.

+0

tôi thiết lập nó theo cách này nhưng các dấu vết chứa gì về thông tin liên lạc giữa các ứng dụng của tôi và các dịch vụ web của bên thứ 3 ... Nó có thể là do SSL ?? – kaivalya

+0

là thông tin liên lạc giữa "ứng dụng của bạn và dịch vụ web của bên thứ ba" có phải là cuộc gọi WCF không? Sau đó, bạn chắc chắn sẽ thấy các mục trong nhật ký WCF của bạn. –

+0

Bên thứ ba là dịch vụ web được thêm làm tham chiếu web cho ứng dụng wcf của tôi. Và ứng dụng của tôi đang gửi yêu cầu và nhận phản hồi từ dịch vụ đó. Bất kỳ thông tin tham số req/resp nào từ giao tiếp này chắc chắn không tồn tại trong các dấu vết. Tôi đã thực hiện tìm kiếm/tìm kiếm các hoạt động trên dấu vết ngay cả với notepad và không có dấu vết của bất kỳ req/resp đối tượng hoặc giá trị của tôi trong nhật ký. Hiện đang thực hiện hành vi Interceptor để chặn tin nhắn, hy vọng điều này sẽ cho tôi những gì tôi cần .. – kaivalya

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