1 回答
TA贡献1848条经验 获得超6个赞
我已经解决了我的问题,我将更新此问题以供将来参考以及可能遇到此问题的任何其他人参考。
这样做的诀窍是注册一个新的文本编码元素来识别此绑定可以接受的消息类型。
由于该<textMessageEncoding />
元素实际上只能采用 SOAP11 (text/xml) 和 SOAP12 (application/soap+xml),因此注册一个可以进一步配置的新自定义元素是最可靠的方法。
Microsoft 有一些示例代码来执行此操作,可以轻松地将其导入到解决方案中(我创建了一个单独的库来容纳此代码以供参考)。此参考数据可在此处找到,示例代码可在此处找到。
实现此代码后,您可以定义一个新的 textMessageEncoding 元素 customTextMessageEncoding 组合,例如<customTextMessageEncoding encoding="utf-8" mediaType="text/xml" messageVersion="Soap12" />
. 请注意,参考链接错误地将上面的行标记为contentType而不是mediaType。上面的组合允许我使用 SOAP 1.2 信封和 SOAP 1.1 内容类型注册绑定。
另一件事是使用 mediaType 来更改响应类型,并覆盖 MessageEncoder 上的 IsContentTypeSupported 以允许服务响应不同的内容类型。这也是客户的要求,尽管它很不寻常。该服务现在可以接受 text/xml 和 application/soap+xml(通过覆盖的方法)并响应提供的 mediaType
简而言之,解决方案需要:
实现自定义编码器和编码器工厂
为自定义编码器实现绑定元素
使用自定义绑定配置集成自定义绑定元素
开发自定义配置处理程序以允许自定义绑定元素的文件配置(app.config 或 web.config)
在 web.config 中注册新的绑定元素
使用新的绑定元素来配置绑定
- 1 回答
- 0 关注
- 324 浏览
添加回答
举报