我想使用IDispatchMessageInspector和BeforeSendReply方法在返回客户端之前更改重放,但为时已晚,导致消息被序列化。
这是另一种改变服务返回但未序列化的数据的wcf接口或其他方式吗?
我希望使用服务返回的数据生成新数据,并在接受类型为text / html时进行自己的序列化
答案 0 :(得分:1)
在返回对象和传出消息之间进行转换的组件是IDispatchMessageFormatter
。内容协商(根据传入的Accept
标题更改响应格式)在“经典”WCF中是可行的,但是您需要编写自己的格式化程序来处理它 - 对于传入的请求它会检查什么是接受标头并将其存储在某处(例如操作上下文),并且在传出响应时,它将获得该标头的值并决定如何格式化传出响应。
然而,使用WCF Web API,内容协商要容易得多,而且确实有很多样本可以做到这一点。在http://wcf.codeplex.com处查看 - Content Manager示例具有一些内容协商功能。