1

MessageContractsでSOAP/XMLを使用していて、次のような指定された形式を返す必要があります。

検証が成功した場合:

<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のタイプを返します。では、成功または失敗のXML要素を返すようにMyResponseを定義するにはどうすればよいですか?

public MyResponse SaveMessage(MyRequest request) 
{            
     return new MyResponse();            
}

このように、成功メッセージを問題なく返すことができます。ラップが解除され、成功のXML要素があります。ただし、FailureのXML要素も返すことができる必要があり、同じMyResponseタイプを使用してそれを行うことはできません。

[MessageContract(IsWrapped=false)]
public class MyResponse
{
    [MessageBodyMember(Namespace = "http://tempuri.org")]
    public Success Success { get; set; }

}
4

1 に答える 1

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);
于 2012-10-22T16:10:11.173 に答える