Ich erhalte eine Ausgabe von XML aus einer gespeicherten Prozedur. Was ich versuche, ist, dass ich dieses XML über ASP.NET erhalte:
%Vor%aber ich bekomme immer diese Fehler:
%Vor%Was mache ich falsch? Ist etwas nicht in Ordnung mit der Art, wie ich versuche, die XML zu bekommen oder wäre ein Problem mit der XML selbst?
Ich habe Folgendes versucht:
%Vor%und habe diese Fehler:
%Vor% Das Problem ist wahrscheinlich, dass Sie das Ergebnis von XmlDocument
verwenden, da ich auch kein Problem mit dem Code finden kann. Warum ich das glaube?
HttpControllerHandler
gestartet wurde und wahrscheinlich damit zu tun hat, wo oder wie Sie Ihre Antwort ausliefern. InvalidOperationException
werfen, aber es liest, dass dies nur auftreten würde, wenn The SqlConnection closed or dropped during a streaming operation. For more information about streaming, see SqlClient Streaming Support.
XmlException
aus, so dass dies aufgrund der empfangenen Ausnahme nicht möglich ist. Das ist eine Spekulation, da ich nicht weiß, welches Framework Sie verwenden oder ob dies die WebApi-Methode oder eine Methode ist, die das Ergebnis weiter unten in der Aufrufliste bereitstellt.
Die Lösung für Sie besteht also darin, Ihre Daten in ein Format zu bringen, das von dem von Ihnen verwendeten Framework serialisiert werden kann. Für weitere Hilfe müssen Sie bereitstellen.
WebApiConfig.cs
-Datei konfiguriert sind. %Code%
Ich kann den genauen Fehler und die Nachricht duplizieren, indem ich eine GlobalConfiguration.Configuration.Formatters.Add(new System.Net.Http.Formatting.XmlMediaTypeFormatter()); GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true;
als Antwort in einem Web-API-Controller zurückgebe. Dies zeigt wiederum, dass es nichts mit dem Inhalt der Methode zu tun hat, sondern mehr, wo das XmlDocument in der Antwort verwendet wird. Wenn Sie ein XmlDocument direkt in die Antwort zurückgeben (also nicht Teil eines größeren Objekts), kann ich es beheben, indem ich einen neuen XmlDocument
-Typ hinzufüge, der weiß, wie man den Inhalt von XmlDocument entschlüsselt.% Co_de% . Dies basiert auf dieser vorherigen SO-Antwort gepostet von HttpContent
. Hier ist das Problem in einem vollständigen selbständigen Beispiel.
Ihre Methode hat einige Probleme in Bezug auf XmlDocument
. Unten ist der aufgeräumte Code mit Erklärungen.
Ändern Sie Ihren unteren Code,
%Vor%Wie unten,
%Vor%Wenn immer noch nicht funktioniert, bitte teilen Sie Ihre XML, die Sie von SP zurückgeben.
XmlDocument ist nicht serialisierbar, gibt stattdessen eine Zeichenfolgendarstellung des XML zurück
%Vor% Sie können Ihre eigene einfache MediaTypeFormatter
in ASP.NET Web API
erstellen, um eine XmlDocument
direkt auf eine Antwort zu streamen. Eine Beispielimplementierung befindet sich am Ende dieser Antwort.
Registrieren Sie es in der Methode public static void Register(HttpConfiguration config)
der automatisch generierten Klasse WebApiConfig
, die Sie beim Erstellen eines neuen Projekts mit dem VS-Assistenten erhalten.
Machen Sie in einer Controller-Klassenmethode etwas Ähnliches
%Vor% Beispiel für einen benutzerdefinierten MediaTypeFormatter zum Streamen von XmlDocument
auf eine Antwort.
Tags und Links sql-server c# asp.net xml