手动反序列化WebRequest XML

时间:2010-12-21 22:30:08

标签: serialization asmx

所以我有一个ASMX Web服务,它返回一组搜索结果对象。当我通过浏览器调用WebMethod时,会生成以下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时,该集合很容易降下来。直到我稍后尝试手动反序列化它才会发疯。

非常感谢任何想法...

谢谢!

1 个答案:

答案 0 :(得分:0)

首先,你为什么要通过WebRequest调用它?为什么不使用“添加服务引用”并使用代理类?

其次,当您在浏览器中调用它时,您不使用SOAP。请注意响应中缺少SOAP Envelope。