2013-01-18 82 views
0

我目前返回一個字符串像這樣一個WCF方法:如何從WCF服務返回特定的SOAP響應?

string CreateDesign(string UID, string TemplateName) 

的retruned串用這種方法創建:

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服務返回類似的響應? 我很努力,現在已經有一段時間了,感謝任何幫助。

問候。

+0

看一看我添加的例子 –

回答

1

要完全控制SOAP消息正文,您應該使用MessageContract屬性來輸入和輸出參數。這是網上的一篇很好的文章。 Using Message Contracts 希望它有幫助!

編輯:
經營合同

[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>