2010-01-26 60 views
13

Tôi hơi bối rối về cách SOAPAction được triển khai trong WCF (và các khung dịch vụ web khác cho vấn đề đó).Hoạt động xà phòng WCF trong tiêu đề HTTP hoặc tiêu đề SOAP?

Trong ứng dụng khách thử nghiệm, tôi có Trình kiểm tra thư khách hàng được định cấu hình để lấy cả thông điệp SOAP và bất kỳ tiêu đề HTTP nào đang được gửi cùng với yêu cầu. Ít nhất ở đây thanh tra nhắn khách hàng, hành động xuất hiện như một yếu tố trong SOAP Header:

<s:Header> 
    <Action ... >http://myurl.com/2009/11/MyService/MyMethod</Action> 

Tuy nhiên, nếu tôi xem các yêu cầu trong Fiddler, yếu tố Action là mất tích và thay vào đó bây giờ có thêm mục nhập trong tiêu đề HTTP:

SOAPAction: "http://myurl.com/2009/11/MyService/MyMethod" 

Bất cứ ai có thể giải thích những gì đang xảy ra ??

Cảm ơn!

Trả lời

13

Đây là vấn đề với WCF không tuân thủ các tiêu chuẩn.

SOAP 1.1 sử dụng tiêu đề SOAPAction để quyết định phương thức cần gọi, nhưng điều này hơi lộn xộn khi tên phương thức được nhúng ở đâu đó trong thư. SOAP 1.2 đã giải quyết vấn đề này và thêm hành động vào tiêu đề kiểu nội dung và không chấp nhận tiêu đề SOAPAction (mặc dù bây giờ nó là tùy chọn cho những khách hàng vẫn muốn gửi nó).

Xem trang blog o'reilly để biết một số chi tiết.

3

Dường như với tôi như thể hai cái đó tương đương nhau, phải không? Tôi đoán Fiddler chỉ giải thích tiêu đề SOAP "", gọi nó là "SOAPAction". Giá trị có vẻ giống nhau, phải không?

Những gì bạn nhận được từ Trình kiểm tra thư của khách hàng là dữ liệu XML thô (định dạng thô của thông điệp SOAP) khi nó di chuyển trên dây đồng (hoặc sợi). Cái mà Fiddler cung cấp cho bạn là một cách diễn giải HTTP theo hướng cao hơn của cùng một thông điệp XML, tôi sẽ nói. Đánh giá từ các bài viết và bài viết trên blog khác mà tôi đã tìm thấy trên Fiddler và SOAP (ví dụ: this blog post - hãy xem phần "Lấy mẫu" về phía cuối), dường như dường như Fiddler sẽ loại bỏ các tiêu đề SOAP và diễn giải/hiển thị chúng theo định dạng tùy chỉnh, chỉ để lại phần thân SOAP được hiển thị dưới dạng nội dung của thông báo được hiển thị.

Có sự cố kỹ thuật thực tế nào không? Hay chỉ là một câu hỏi về cách diễn giải hai định dạng này?

+0

Chúng có thể tương đương. Nó không thực sự là một vấn đề kỹ thuật, nhưng nó là một chút bối rối mà thanh tra tin nhắn của tôi đang nói với tôi một điều, nhưng thông điệp thực tế đi ra là khác nhau. Ngoài ra, nhà cung cấp dịch vụ cũng xác minh rằng Fiddler đã đúng và người kiểm tra tin nhắn của tôi đã không đưa ra cho tôi yêu cầu thực sự gửi đi. Tôi đã hy vọng ai đó có thể giải thích lý do tại sao hành vi này xảy ra. – WayneC

0

Đưa hành động SOAP vào tiêu đề HTTP là một phần của đặc tả SOA và WCF chỉ triển khai đặc tả SOAP trong trường hợp này.

đọc ở đây: http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383528

+3

-1: không, SOAPAction HTTP Header là một phần của SOAP 1.1. Cái còn lại là SOAP 1.2. –

4

Cơ hội được rằng bạn đang nhìn thấy sự khác biệt giữa SOAP 1.1 và SOAP 1.2.

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