0

現在、次のような文字列を返す WCF メソッドがあります。

string CreateDesign(string UID, string TemplateName)

返された文字列は、次のメソッドによって作成されます。

string RequestProcessed(string status, string UID)
    {
        XDocument doc = new XDocument(
            new XElement("RequestProcessed",
                new XElement("Status", status),
                new XElement("UID", UID)));

        return doc.ToString();
    }

SOAPUI を使用して得た応答は次のようなものです。

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
  <CreateDesignResponse xmlns="http://tempuri.org/">
     <CreateDesignResult><![CDATA[<RequestProcessed>
       <Status>OK</Status>
       <UID>FolderName</UID>
     </RequestProcessed>]]></CreateStandardResult>
  </CreateStandardResponse>
 </s:Body>
 </s:Envelope>

クライアントは次のように期待しています。

<soap:Body>
 <m:RequestProcessed xmlns:m=" ">
  <m:Status></m:Status>
  <m:UID></m:UID>
 </m: RequestProcessed >
</soap:Body>

WCF サービスがそのような応答を返すようにするにはどうすればよいですか? 私はこれにかなり苦労しています。助けていただければ幸いです。

よろしく。

4

1 に答える 1

2

SOAPメッセージ本文を完全に制御するには、入力パラメーターと出力パラメーターの両方にMessageContract属性を使用する必要があります。これは、最初にWeb上で良い記事です。 メッセージコントラクトの使用お 役に立てば幸いです。

編集:
運用契約

[ServiceContract]
public interface ITestService
{
    [OperationContract]
    RequestProcessed TestMethod(RequestInput tt);
}

RequestProcessed

[MessageContract]
public class RequestProcessed
{
    [MessageBodyMember]
    public string Status { get; set; }
    [MessageBodyMember]
    public Guid UID { get; set; }
}

SOAPメッセージ本文

<s:Body>
   <RequestProcessed xmlns="http://tempuri.org/">
     <Status>OK</Status>
     <UID>ffd338ed-bca3-46c1-9ee3-3c92ba3b3acc</UID>
   </RequestProcessed>
</s:Body>
于 2013-01-18T08:14:14.210 に答える