【发布时间】:2021-12-04 17:47:50
【问题描述】:
我正在尝试使用 .NET 5 中的 WCF 使用 SOAP 服务。服务提供者希望请求的内容类型为 text/xml,但发送内容类型为 application/xml 的响应。
以下代码抛出 ProtocolException,因为它期望请求和响应都具有内容类型 text/xml。
var binding = new BasicHttpBinding();
var endpoint = new EndpointAddress("http://[...]/inquiry");
var channelFactory = new ChannelFactory<InquiryServiceSoapPort>(binding, endpoint);
var serviceClient = channelFactory.CreateChannel();
var inquiry = new Inquiry();
var result = serviceClient.createInquiry(inquiry);
我能够使用custom encoder 将内容类型更改为application/xml,但这会同时更改请求和响应,然后我的请求被服务器拒绝。
有没有办法只改变响应的内容类型?
编辑
请注意,我正在编写客户端代码,而不是服务器端代码。到目前为止,我似乎只能捕获并吞下异常,或者使用另一个框架或从头开始重新实现代码。
【问题讨论】:
-
“我正在尝试使用 .NET 5 中的 WCF 使用 SOAP 服务” - 你有我的同情
-
出于好奇,您是否有使用(非常不符合人体工程学的)旧的 .NET WCF 客户端代码?如果这仅适用于少数 SOAP 端点,您可以使用您自己的逻辑对
HttpClient进行破解。 -
你可以看看this case,也许对你有帮助。