我使用SOAP / XML和MessageContracts,必须返回指定的格式,类似于以下内容:
如果验证成功:
<env:Envelope>
<env:Body>
<Success xmlns="http://tempuri.org"></Success>
</env:Body>
</env:Envelope>
如果不成功:
<env:Envelope>
<env:Body>
<Failure xmlns="http://tempuri.org"></Failure>
</env:Body>
</env:Envelope>
例如,采用以下方法。它返回一种MyResponse。那么如何定义MyResponse以返回成功或失败XML元素?
public MyResponse SaveMessage(MyRequest request)
{
return new MyResponse();
}
我可以很好地回复成功消息,就像这样。它已解包并具有Success的XML元素。但是我还需要能够返回一个失败的XML元素,而我不能使用相同的MyResponse类型。
[MessageContract(IsWrapped=false)]
public class MyResponse
{
[MessageBodyMember(Namespace = "http://tempuri.org")]
public Success Success { get; set; }
}
答案 0 :(得分:0)
我最终使用无类型消息并返回如下消息(类似于失败):
MemoryStream stream = new MemoryStream(Encoding.ASCII.GetBytes("<Success xmlns=\"http://tempuri.org\"></Success>"));
XmlDictionaryReader xdr = XmlDictionaryReader.CreateTextReader(stream,new XmlDictionaryReaderQuotas());
return Message.CreateMessage(MessageVersion.Soap11, "xxx/xxx/xxxResponse", xdr);