我正在将我的 WSE3 Web 服务移动到 WCF。但客户端是 WSE3 客户端。
所有的操作契约都返回一个类的实例MessageContract
。这适用于 2 个操作,但对于同一服务合同的一个操作以某种方式失败。错误是:
The signature or decryption was invalid.
当我查看 WCF 跟踪文件时,我发现以下内容:
The formatter threw an exception while trying to deserialize the message: Error in deserializing body of request message for operation 'MyOperationName'. End element 'Body' from namespace 'http://schemas.xmlsoap.org/soap/envelope/' expected. Found element 'MyOperationName' from namespace 'urn:MyProject:MyModule:2006:04:MyAuthorizationModule'.
我的观察是,当我使用XmlRoot
属性来装饰响应类(而不是使用MessageContract
属性)时,我没有得到这个异常。但是,响应对象不能反序列化。即我可以在输入跟踪中看到 XML 响应,但由于预期的 XML 结构不匹配,服务调用null
在客户端返回。
该类MessageContract
只有一个公共属性 ( MessageBodyMember
),它返回另一个用该XmlRoot
属性修饰的类的实例。这个类(用 装饰xmlRoot
)有一个属性,它给出了Collection
某个实体类的对象,该实体类中具有XmlElement
属性。
我需要检查/验证哪些内容?如果需要,我可以提供课程代码片段。