我的 WCF 服务中有一个操作契约,它返回该类的一个实例,它实际上是一个消息契约。 (不是数据合同)。消息契约具有属性> [MessageBodyMember]的属性
[MessageContract(WrapperName="AuthorizarionResponse", IsWrapped="true")]
public class AuthorizationResponse
{
[MessageBodyMember] public string role {get;set;};
[MessageBodyMember] public Organization organization {get; set;};
}
[ServiceContract]
interface IAuthorization
{
[OperationContract]
public AuthoriztionResponse GetAuthorizationResult(AuthorizationRequestMessage request);
}
Organization
类使用 XmlSerializer。它不使用 DataContract,因为我希望从现有的 ASMX 客户端使用 WCF 服务。
当我调试服务并查看操作合约方法中的返回值时,我可以通过此操作合约看到我想要从服务返回的所有内容。
但在客户端,我得到空值!
一切都结束了,没有任何异常/错误。 Fiddler2 没有给出任何红色/错误标记!
会出什么问题吗?
问题是服务发送的回复肥皂消息未按客户端合同代码的预期形成。序列化程序根据客户端应用程序中代理代码中定义的 Contract 来解析 Soap 消息,但是,如果收到的肥皂消息与预期不符,则序列化程序会默默地跳过内容并继续前进。因此,没有错误,并且对象也没有填充,因为序列化程序没有找到预期的内容。
因此,您需要确定客户端期望如何形成肥皂消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)