簡體   English   中英

WCF肥皂響應-刪除“結果”節點(格式化WCF響應)

[英]WCF Soap Response - Remove “Result” node (Format WCF Response)

我正在將舊版Web服務轉換為WCF服務。 前端應用程序當前正在使用此服務。 但是到目前為止,前端打算使用新的WCF服務,因此我們計划將請求從IIS重新路由到我們的新服務。 這里的問題是新的WCF服務應該能夠處理舊的輸入請求,並且應該能夠以完全相同的格式發送回響應。

我在處理輸入請求時沒有遇到任何麻煩,但是遇到嘗試以舊格式返回消息的問題。 我當前的服務正在以以下格式返回SoapResponse(我使用任何消息合約/ DataContracts都與使用舊的舊版代碼中使用的返回類型和輸入參數相同):

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <UserCheckResponse xmlns="Abc.SomeNamespace">
     <UserCheckResult a:Direction="Response" a:Purpose="UserCheck" xmlns:a="Abc.SomeNamespace">
        <a:KV a:Key="TraceID" a:Value="546546565" />
        <a:KV a:Key="Response" a:Value="78954" />
        <a:KV a:Key="UserVerified" a:Value="N" />
        <a:KV a:Key="TryAgain" a:Value="Y" />
        <a:KV a:Key="DataSource" a:Value="NA" />
     </UserCheckResult>
  </UserCheckResponse>

我希望它看起來像下面(我不想在響應中使用UserCheckResult節點,而是希望直接在UserCheckResponse節點下使用鍵值對):

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <UserCheckResponse a:Direction="Response" a:Purpose="UserCheck" xmlns:a="Abc.SomeNamespace">
        <a:KV a:Key="TraceID" a:Value="546546565" />
        <a:KV a:Key="Response" a:Value="78954" />
        <a:KV a:Key="UserVerified" a:Value="N" />
        <a:KV a:Key="TryAgain" a:Value="Y" />
        <a:KV a:Key="DataSource" a:Value="NA" />
  </UserCheckResponse>

我會說使用XMLSerialize代替DataContractSerializer (WCF的默認值)。 為您的操作添加“ [System.ServiceModel.XmlSerializerFormatAttribute()] ”。然后將XmlElementAttribute用於響應節點。 當我不忙時,我會給一些樣品。 因為我當前正在處理舊版Web服務調用,並使用舊版請求調用WCF服務,所以返回舊版響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM