2016-07-04 17 views
0

私はWebサービスをSystem.ServiceModel System.ServiceModel.Web System.ServiceModel.Activation名前空間を使用して記述しました。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コードをstringとして返すことです。私はそれを私のタイプに変換することはできません。 問題は、私の考えでは、追加のシリアル化です。誰もそれを設定する方法を知っていますか? –

+0

もう一度考えて解決策を見つけました。あなたは全く正しかった。私はクラスを変更したので、クラス全体が返され、XMLドキュメントはありません。それは、正しいxmlを単独で作成しました。 私は今、満足しています。ありがとうございました!! –

関連する問題