Tôi đã gặp sự cố khi gọi dịch vụ web trên xe buýt SAP PI từ máy khách WCF của tôi. Hoạt động được định nghĩa là một chiều và phương thức trên hợp đồng hoạt động proxy của tôi được trang trí phù hợp khi tham chiếu dịch vụ được thêm vào. Tuy nhiên, khách hàng dịch vụ được một ngoại lệ khi gọi các hoạt động theo:Vấn đề với khách hàng WCF gọi hoạt động một chiều
Các hoạt động một chiều trở lại một thông điệp không null với Action = ''
Sử dụng soapUI, phương pháp trên bus có thể được gọi thành công, và nó trả về một phong bì SOAP với một thân trống. Những người xe buýt nói với tôi, đây là theo thông số kỹ thuật SOAP:
(thông số kỹ thuật SOAP, chương 4.7.9, hoạt động một chiều):
Có khác nhau giải thích về cách thức HTTP là phải được sử dụng khi thực hiện các hoạt động một chiều.
R2714 Đối với các thao tác một chiều, CÀI ĐẶT KHÔNG PHẢI trả về phản hồi HTTP có chứa phong bì. Cụ thể, nội dung của đối tượng phản hồi HTTP phải trống.
R2750 NGƯỜI TIÊU DÙNG PHẢI bỏ qua một phong bì được mang trong thông báo phản hồi HTTP trong thao tác một chiều.
R2727 Đối với hoạt động một chiều, một người tiêu dùng phải KHÔNG giải thích một phản ứng HTTP mã trạng thái thành công (ví dụ: 2xx) có nghĩa là thông điệp có giá trị hay rằng người nhận sẽ xử lý nó.
Vì vậy, có vẻ như, khách hàng WCF của tôi không tuân thủ R2750.
Tôi đã phát hiện ra rằng khi tôi buộc hợp đồng hoạt động trên proxy phải là IsOneWay = false, mọi thứ đều hoạt động.
Có điều gì sai với cách WCF xử lý các hoạt động một cách hoặc tôi làm điều gì đó sai (nhiều khả năng)? Có điều gì khác tôi nên làm, nó chỉ có vẻ không đúng để ghi đè lên khách hàng proxy WCF tạo ra.
Cảm ơn mọi đề xuất.
Câu hỏi tuyệt vời +1. Tôi cho rằng phe của họ cũng không tuân theo R2714. Hãy xem xét việc gửi một sự cố với Microsoft và cho chúng tôi biết kết quả là gì. –
Câu hỏi tương tự (và biết thêm thông tin): http://stackoverflow.com/q/4510484/46039 –
Liên kết với thông số SOAP 4.7.9 Hoạt động một chiều: http://www.ws-i.org/profiles/basicprofile -1.1.html –