2010-12-21 80 views
0

SO我有一個ASMX web服務,它返回一個搜索結果對象數組。當我通過瀏覽器調用的WebMethod,將生成以下XML ...手動反序列化WebRequest XML

<?xml version="1.0" encoding="utf-8"?><ArrayOfSearchResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/"><SearchResult> 
<Name>Rock Salt Steak House</Name> 
<BusinessType>Steakhouses</BusinessType> 
<Rating>mStar30</Rating> 
<Address>1232 Westlake Ave N</Address> 
<City>Seattle</City> 
<State>WA</State> 
<Phone>(206) 284-1047</Phone> 
<Zip>98109</Zip></SearchResult><SearchResult> 
<Name>Laredos Grill</Name> 
<BusinessType>Tex-Mex Bars</BusinessType> 
<Rating>mStar35</Rating> 
<Address>555 Aloha St Ste 100</Address> 
<City>Seattle</City> 
<State>WA</State> 
<Phone>(206) 218-1040</Phone> 
<Zip>98109</Zip></SearchResult>....... 

這個XML被保存在一個文件中後反序列化。問題是我似乎無法再將其序列化。下面是我使用的代碼....

XmlSerializer serializer = new XmlSerializer(typeof(List<Service.SearchResult>)); 
    using (StringReader stringReader = new StringReader(strXMLContent)) // can throw ArgumentNullException 
    { 

     using (XmlReader xmlReader = XmlReader.Create(stringReader)) 
     { 
      //xmlReader.Read(); 
      return ((List<Service.SearchResult>)serializer.Deserialize(xmlReader)).ToArray(); // can throw SerializationException 

     } 
    } 

我得到的是抱怨錯誤「有XML文檔(2,2)中的一個錯誤」和內部異常(的InnerException = {「ArrayOfSearchResult的xmlns = 'http://tempuri.org/'不是預期的。「})

當然,在代碼中調用這個WebMethod時,集合很容易下來。直到後來我試圖手動反序列化它才發瘋。

任何想法將不勝感激...

謝謝!

回答

0

首先,你爲什麼要通過WebRequest調用它?爲什麼不使用「添加服務引用」並使用代理類?其次,當你在瀏覽器中調用它時,你並沒有使用SOAP。請注意響應中缺少SOAP Envelope。

+0

相信我,如果我可以通過代理將其內聯。這是一個很長的故事,但在堅果殼中,我必須消耗已經保存的輸出。至於缺乏SOAP,也許這就是我的問題......強制SOAP輸出的任何方式? – Eric 2010-12-21 23:59:49