2012-03-28 24 views
1

私のSOAPサービスコールは、次の応答を返している:私は経由してこれをシリアル化しようとするとSOAP XMLレスポンスがC#でデシリアライズされないのはなぜですか?

<AssetList xmlns="http://schemas.datacontract.org/2004/07/XOSDigital.Assets" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <Facets xmlns:a="http://schemas.datacontract.org/2004/07/XOSDigital.Business_Classes.Search"/> 
    <Results/> 
    <err i:nil="true"/> 
    <offset>0</offset> 
    <total>0</total> 
</AssetList> 

<AssetList xmlns='http://schemas.datacontract.org/2004/07/XOSDigital.Assets'> was not expected. 

AssetListオブジェクト:

 AssetList assets; 
     var serializer = new XmlSerializer(typeof(AssetList)); 
     assets = (AssetList)serializer.Deserialize(new MemoryStream(Encoding.UTF8.GetBytes(response.Content))); 

私は次の例外を取得します私はdeserializeしようとしている同じ正確なサービス私のサービスの参照を更新することによって自動的に生成された私は私のGETリクエストで電話しています。

なぜこれが失敗しますか?

[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")] 
[System.Runtime.Serialization.DataContractAttribute(Name="AssetList", Namespace="http://schemas.datacontract.org/2004/07/XOSDigital.Assets")] 
[System.SerializableAttribute()] 
public partial class AssetList : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged { 

    [System.NonSerializedAttribute()] 
    private System.Runtime.Serialization.ExtensionDataObject extensionDataField; 

    [System.Runtime.Serialization.OptionalFieldAttribute()] 
    private XOSDigital.XOSSuperfanAdminList.XosAssetWebService.AvailableFacetGroup[] FacetsField; 

    [System.Runtime.Serialization.OptionalFieldAttribute()] 
    private XOSDigital.XOSSuperfanAdminList.XosAssetWebService.Asset[] ResultsField; 

    [System.Runtime.Serialization.OptionalFieldAttribute()] 
    private string errField; 

    [System.Runtime.Serialization.OptionalFieldAttribute()] 
    private int offsetField; 

    [System.Runtime.Serialization.OptionalFieldAttribute()] 
    private int totalField; 

    [global::System.ComponentModel.BrowsableAttribute(false)] 
    public System.Runtime.Serialization.ExtensionDataObject ExtensionData { 
     get { 
      return this.extensionDataField; 
     } 
     set { 
      this.extensionDataField = value; 
     } 
    } 

    [System.Runtime.Serialization.DataMemberAttribute()] 
    public XOSDigital.XOSSuperfanAdminList.XosAssetWebService.AvailableFacetGroup[] Facets { 
     get { 
      return this.FacetsField; 
     } 
     set { 
      if ((object.ReferenceEquals(this.FacetsField, value) != true)) { 
       this.FacetsField = value; 
       this.RaisePropertyChanged("Facets"); 
      } 
     } 
    } 

    [System.Runtime.Serialization.DataMemberAttribute()] 
    public XOSDigital.XOSSuperfanAdminList.XosAssetWebService.Asset[] Results { 
     get { 
      return this.ResultsField; 
     } 
     set { 
      if ((object.ReferenceEquals(this.ResultsField, value) != true)) { 
       this.ResultsField = value; 
       this.RaisePropertyChanged("Results"); 
      } 
     } 
    } 

    [System.Runtime.Serialization.DataMemberAttribute()] 
    public string err { 
     get { 
      return this.errField; 
     } 
     set { 
      if ((object.ReferenceEquals(this.errField, value) != true)) { 
       this.errField = value; 
       this.RaisePropertyChanged("err"); 
      } 
     } 
    } 

    [System.Runtime.Serialization.DataMemberAttribute()] 
    public int offset { 
     get { 
      return this.offsetField; 
     } 
     set { 
      if ((this.offsetField.Equals(value) != true)) { 
       this.offsetField = value; 
       this.RaisePropertyChanged("offset"); 
      } 
     } 
    } 

    [System.Runtime.Serialization.DataMemberAttribute()] 
    public int total { 
     get { 
      return this.totalField; 
     } 
     set { 
      if ((this.totalField.Equals(value) != true)) { 
       this.totalField = value; 
       this.RaisePropertyChanged("total"); 
      } 
     } 
    } 

    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; 

    protected void RaisePropertyChanged(string propertyName) { 
     System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged; 
     if ((propertyChanged != null)) { 
      propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 
+0

自動生成されたAssetListクラスを追加できますか? –

+0

クラス – KallDrexx

答えて

3

問題はnamと関連していると思いますespaces。

これを試すことができますか?

var serializer = new XmlSerializer(typeof(AssetList),"http://schemas.datacontract.org/2004/07/XOSDigital.Assets"); 
+0

それを取得しました!どうもありがとうございます – KallDrexx

0

あなたのxmlの最初の行として追加してください:

また
<?xml version="1.0"?> 

、あなたのAssetListクラスに名前空間にXmlRoot属性を追加します。

アセットリストクラスは次のように生成されます

[XmlRoot("AssetList", Namespace = "http://schemas.datacontract.org/2004/07/XOSDigital.Assets")] 
+0

で質問を更新しましたが、同じ行で同じエラーが表示されることはありません(AssetListは期待されていません) – KallDrexx

関連する問題