[英]NHibernate sessions/transactions acting differently on IIS6 and Visual Studio 2008 Debug Server
[英]WCF (de) serialization behaving differently under debug/Visual Studio and IIS
我有一个托管的WCF服务,其中一种方法的元素类型为xs:AnyType。 在我的代码中,我将xs:Any序列化为XmlNode
在Visual Studio(iis express)中,我的消息可以完美地传递,并且XML加载到XmlNode属性中。 当我部署到IIS并发送“完全相同的消息”时,该属性的全部内容都得到一个<。
我之前遇到过一个相关的问题,在Visual Studio中,水合属性的真实类型是XmlElement,但是在IIS中,它作为XmlText出现(我为什么选择XmlNode,它是一个共同的祖先)。 具有xs:anytype的WCF消息导致序列化问题
这两个问题似乎可能是相关的,但是为什么应用程序在Visual Studio中使用的序列化逻辑与IIS中使用的逻辑不同?
刻录完MSDN支持票证后,我们发现了这两个问题的根本原因。 IIS与IIS Express没有关系,消息的内容略有不同。
xsd:anyType允许发送任意XML。 在这种情况下,Java应用程序将发送HtmlEncoded xml作为该元素的有效负载。 WCF不会接受此内容并引发序列化错误,而是接受它并将其水化为XmlText而不是XmlElement。 但是,水合后,就没有完整的有效负载,只有<
使这个问题令人困惑的是,所有调试窗口,WCF跟踪等都“固定”了htmlEncoded内容以显示为有效XML。 因此,当我从WCF跟踪复制消息,并从SoapUI手动运行该消息以尝试重现时,行为发生了变化!
我正在敦促客户修复他们发送的消息中的有效负载,但是如果不可能,则可以使用IDispatchMessageInspector.AfterReceiveRequest方法将有效负载转换为正确的负载。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.