2016-07-04 87 views
0

我使用System.ServiceModel System.ServiceModel.Web System.ServiceModel.Activation命名空間編寫了web服務。xml反序列化<string>標記

[XmlSerializerFormat] 
     [OperationContract] 
     [WebGet(UriTemplate = Routing.GetClientRoute, BodyStyle = WebMessageBodyStyle.Bare)] 
     string GetClientNameById(string Id);   

予描述的數據與這個類:

[XmlRoot("ServiceXmlReply")] 
    public class ServiceXmlReply 
    { 
     [XmlElement] 
     public string Name; 
    } 

問題是與響應,這是我從服務接收。它看起來像這樣:

"<?xml version=\"1.0\" encoding=\"utf-8\"?> 
<string> 
<ServiceXmlReply xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" 
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> 
<Name>Igor<Name> 
<ServiceXmlReply> 
</string>" 

正如你可以看到那裏不應該有「字符串」標籤,但它是。正因爲如此,我不能反序列化反應並獲取數據。

服務器和客戶端的類相同。

回答

0

您的操作契約定義了GetClientNameById的響應是字符串類型。所以會發生什麼是你的返回類型字符串的內容是一個序列化的XML。

得到這個工作,你應該是:

  1. 改變你的操作的返回類型ServiceXmlReply或
  2. 放棄使用ServiceXmlReply的。在服務和客戶端使用字符串。
+0

非常感謝您的回覆。 問題是該方法返回類的字符串的XML代碼。我不能將它轉換爲我的類型。 問題在於我的想法有額外的序列化。有誰知道如何設置它? –

+0

我想了一次,找到了解決辦法。你是完全正確的。我只是改變了我的課程,所以它返回了我的課程,而不是xml文檔。它自己創建了正確的xml。 我現在很開心。謝謝!! –