0
是否有機會在運行時(例如使用操作行爲)獲取由操作(DataContractSerializer/NetDataContractSerializer/XmlSerializer等)使用的數據協定序列化程序。我想要實現的是創建一些診斷代碼,使用當前連接的序列化程序對消息進行序列化(在消息檢查器中)以比較結果。如何獲取由運行時WCF操作使用的數據串行器
謝謝,帕維爾
是否有機會在運行時(例如使用操作行爲)獲取由操作(DataContractSerializer/NetDataContractSerializer/XmlSerializer等)使用的數據協定序列化程序。我想要實現的是創建一些診斷代碼,使用當前連接的序列化程序對消息進行序列化(在消息檢查器中)以比較結果。如何獲取由運行時WCF操作使用的數據串行器
謝謝,帕維爾
看看在服務端創建一個消息檢查器。從那裏你可以抓住信息並檢查它的編碼器。編碼器會告訴你它的序列化。這不是工作代碼,但它會像這樣:IDispatchMessageInspector.AfterReceiveRequest(ref Message request....){ if (request.MessageEncoder is typeof(BinaryMessageEncoder) //do stuff.....}
我是一個白癡......你給了我一個提示:)在消息檢查器中,我已經有消息對象的訪問權限。事實上,要使用Message.CreateMessage靜態方法創建Message對象,您必須提供序列化器...所以基本上,消息已經在序列化器裏面了:)我將在後面提供示例代碼... – dragonfly 2009-12-04 20:02:22