2010-12-21 8 views
0

SO habe ich einen ASMX-Webdienst, der ein Array von Suchergebnisobjekten zurückgibt. Als ich die WebMethod über den Browser aufrufen, wird die folgende XML ... erzeugtManuelles Deserialisieren von 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>....... 

Dieses XML wird in einer Datei gespeichert später deserialisiert werden. Das Problem ist, dass ich es nicht mehr serialisieren kann. Hier ist der Code, den ich verwenden ....

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 

     } 
    } 

Der Fehler ich beschwert sich über „es ist ein Fehler in XML-Dokument (2,2)“ und die innere Ausnahme (= Innerexception { "ArrayOfSearchResult xmlns = "http://tempuri.org/" wurde nicht erwartet. "})

Natürlich, wenn Sie diese WebMethod im Code aufrufen, kommt die Sammlung leicht herunter. Erst wenn ich versuche, später manuell zu deserialisieren, wird es verrückt.

würden Irgendwelche Ideen sehr geschätzt ...

Dank!

Antwort

0

Erstens, warum rufen Sie es über WebRequest? Warum nicht einfach "Add Service Reference" verwenden und die Proxy-Klasse verwenden?

Zweitens, wenn Sie es im Browser aufrufen, verwenden Sie nicht SOAP. Notieren Sie das Fehlen von SOAP Envelope in der Antwort.

+0

Vertrauen Sie mir, wenn ich dies inline über den Proxy aufrufen könnte würde ich. Es ist eine lange Geschichte, aber in einer Nussschale muss ich die Ausgabe konsumieren, die gespeichert wurde. Was das Fehlen von SOAP betrifft, ist das vielleicht mein Problem ... eine Möglichkeit, SOAP-Ausgaben zu erzwingen? – Eric

+0

Nicht, wenn Sie es durch den Browser bekommen, nein. –

Verwandte Themen