Tôi đang sử dụng .NET WebService của bên thứ ba trong ứng dụng khách của tôi. Đối với mục đích gỡ lỗi, tôi muốn nắm bắt các yêu cầu SOAP đang được gửi từ máy chủ của tôi. Tôi sẽ đi đâu để tới đó? Điều này đang được thực hiện trên .NET 2.0 mà không cần sử dụng WCF hoặc WSE.Yêu cầu Xà phòng Đăng nhập .NET trên Máy khách
Trả lời
Nếu đó là mục đích gỡ lỗi, tôi chỉ cần cấu hình yêu cầu web để sử dụng proxy và gửi toàn bộ yêu cầu mặc dù fiddler (http://www.fiddlertool.com) thì bạn có thể thấy chính xác nội dung được truyền qua dây.
Có nhiều tùy chọn bạn có thể sử dụng. Chắc chắn có một số công cụ thương mại cho điều này (như SOAPScope), nhưng nếu bạn chỉ muốn nắm bắt các nội dung thô của các yêu cầu/phản hồi thì có một số công cụ ngoài Fiddler (mà Walden đã đề cập).
Cá nhân tôi đã là người dùng lâu năm của Simon Fell's TcpTrace và YATT.
Nếu bạn quan tâm đến việc thực sự thiết lập mã để có thể tự làm nó (nói, bằng cách ghi lại mọi thứ vào một tệp hoặc gì đó), thì bạn có thể muốn xem xét triển khai SoapExtension trên máy chủ của mình.
Bạn có thể sử dụng SoapExtension để ghi lại các cuộc gọi Xà phòng.
Tôi đã sử dụng the Web Service, SOA and SOAP Testing Tool - soapUI với thành công tốt đẹp trong quá khứ.
-Edoode
Tôi đã viết một bài đăng về điều này trước đây có tiêu đề "Logging SOAP Messages in .NET".
Cách dễ nhất là sử dụng các công cụ đã được cung cấp với .NET.
1. Kéo dài lớp SoapExtension
.
2. override phương pháp ProcessMessage
để có được một kết quả đầy đủ các yêu cầu Xà phòng của bạn, sau đó đầu ra thông tin này vào một tập tin văn bản hoặc ghi sự kiện.
public class SoapMessageLogger : SoapExtension
{
//…
public override void ProcessMessage(SoapMessage message)
{
switch(message.Stage)
{
case SoapMessageStage.BeforeDeserialize:
LogResponse(message); break;
case SoapMessageStage.AfterSerialize:
LogResponse(message); break;
// Do nothing on other states
case SoapMessageStage.AfterDeserialize;
case SoapMessageStage.BeforeSerialize;
default: break;
}
}
//…
}
Có thể wireshark? Tôi luôn sử dụng nó để ghi lại lưu lượng truy cập của các ứng dụng của mình.
Tôi đã thử khoảng 6 cách khác nhau để thực hiện điều này trong mã trước khi từ bỏ và thử thách thức. Tôi đã đọc về nó và thấy rằng nó hỗ trợ lưu lượng được mã hóa, tôi đã bắt đầu với nó trước. – carson