所以我有一个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时,该集合很容易降下来。直到我稍后尝试手动反序列化它才会发疯。
非常感谢任何想法...
谢谢!
答案 0 :(得分:0)
首先,你为什么要通过WebRequest调用它?为什么不使用“添加服务引用”并使用代理类?
其次,当您在浏览器中调用它时,您不使用SOAP。请注意响应中缺少SOAP Envelope。