Tôi đang cố tích hợp một ứng dụng với dịch vụ web của bên thứ ba. Chữ ký của phương thức tôi phải gọi là một cái gì đó như thế này (được tạo bởi máy phát proxy của VS):Gọi một dịch vụ web từ C# và gửi không thoát xml
string MyFoo(string param1, string param2, string param3, string someXml)
Bây giờ cho 3 tham số đầu tiên không có vấn đề gì. Tham số thứ tư, theo quy cách nhà cung cấp, nên chứa "xml unescaped bọc trong một khối CDATA", như thế này:
<![CDATA[<?xml version="1.0" encoding="utf-8"?><rootNode></rootNode>]]>
Bây giờ, C# thoát (như tôi mong chờ nó để làm) tất cả các nhân vật đó phải trốn thoát, chủ yếu là "<" và ">" nhân vật, thậm chí trong báo cáo CDATA, dẫn đến một cái gì đó như thế này:
<![CDATA[<?xml version="1.0" encoding="utf-8"?><rootNode></rootNode>]]>
theo như tôi biết điều này là một hành vi chính xác, và không có cách nào để ghi đè lên nó , vì nó có khả năng có thể tạo ra một yêu cầu xấu (thông điệp xà phòng không hợp lệ) và thậm chí là một vấn đề bảo mật.
Có ai biết nếu tôi đang bỏ lỡ điều gì đó, không biết điều gì đó hoặc điều này đúng và mong đợi của dịch vụ web của bên thứ ba không thể tuân thủ?
Cảm ơn.