如何在运行时获取WCF操作使用的数据序列化程序

如何在运行时获取WCF操作使用的数据序列化程序,wcf,datacontractserializer,Wcf,Datacontractserializer,是否有机会在运行时(例如使用操作行为)获取操作(DataContractSerializer/NetDataContractSerializer/XmlSerializer等)使用的数据协定序列化程序。我想要实现的是创建一些诊断代码,使用当前连接的序列化程序对消息进行序列化(在message inspector中)以比较结果 谢谢,Pawel看看如何在服务端创建消息检查器。从那里你可以抓取信息并检查其编码器。编码器将告诉您它是如何序列化的。这不是正常工作的代码,但它是这样的:IDispatchM

是否有机会在运行时(例如使用操作行为)获取操作(DataContractSerializer/NetDataContractSerializer/XmlSerializer等)使用的数据协定序列化程序。我想要实现的是创建一些诊断代码,使用当前连接的序列化程序对消息进行序列化(在message inspector中)以比较结果


谢谢,Pawel

看看如何在服务端创建消息检查器。从那里你可以抓取信息并检查其编码器。编码器将告诉您它是如何序列化的。这不是正常工作的代码,但它是这样的:
IDispatchMessageInspector.AfterReceiveRequest(ref Message request…){if(request.MessageEncoder是typeof(BinaryMessageEncoder)//do stuff…}

我是个白痴…你给了我一个提示:)在Message inspector中,我已经有权访问Message对象。事实上,要使用Message.CreateMessage静态方法创建消息对象,必须提供序列化程序。。。所以基本上消息里面有序列化程序:)我稍后将提供示例代码。。。