2009-08-11 5 views
1

Ich habe einen WCF-Dienst, der eine XElement zurückkehrt, dies funktioniert aber fein Ich mag es würde die XML-Deklaration in der Antwort enthalten:Wie kann ein WCF XElement Response die XML-Deklaration enthalten?

<?xml version="1.0" encoding="utf-8"?> 

Die Client-Seite ist nicht etwas, das ich ändern kann und eine Berichterstattung „das Ergebnis ist nicht XML“ die einzige andere Unterschiede zwischen der Reaktion meines HTTP Ergebnis ist der Inhaltstyp meiner WCF-Dienst:

Content-Type: application/xml; charset=utf-8 

gegen

Content-Type: text/xml; charset=utf-8 

Ich nehme an, das "Ergebnis ist nicht XML" wird durch die fehlende XML-Deklaration verursacht. Wie ist es möglich, die XML-Deklaration der XElement-Antwort hinzuzufügen? Ich dachte, ein MessageFormatter könnte das beheben, aber ich habe keine Ahnung, wo ich anfangen soll.

+1

Eine XML-Deklaration ist in XML nicht erforderlich. Das ist nicht das Problem. –

+0

Ich habe einen WCF-Client geschrieben, der die XML-Deklaration vergisst. Der SharePoint-Webdienst antwortet SERVER_ERROR. Wenn ich die genaue Anfrage nehme und sie nach einer XML-Deklaration sende, antwortet der Webservice korrekt. Daher stimme ich den Standards zu, dass die XML-Deklaration nicht erforderlich ist, aber Sie müssen zustimmen, dass Microsoft Standards nicht respektiert. Wer weiß, wie der Kunde geschrieben wurde? Ich denke, es kann das Problem sein. – rds

+0

Wie ändert man den Zeichensatz? Ich möchte ISO-8859-6 Daten, wie zu tun? – user1237131

Antwort

0

Ein schnelles Beispiel für das Hinzufügen der XML-Deklaration zu Ihrer Ausgabe finden Sie unter XDocument Class Overview.

Obwohl ich @John zustimmen muss, ist es unwahrscheinlich, dass die fehlende XML-Deklaration das Problem ist, es sei denn, der Client ist manuell die XML als Text validieren (was eine dumme Sache wäre, aber ich habe es gesehen) und geht davon aus, dass jeder Text, der die XML-Deklaration nicht enthält, keine gültige XML-Datei sein darf.

Wenn der Client ein .NET-Client ist, dann enable WCF message logging und überprüfen, was der Client empfängt. Wenn der Client kein .NET-Client ist, verwenden Sie Netmon oder Wireshark, um den Datenverkehr zu überprüfen, um die Payload zu überprüfen.

+0

Noch wichtiger, wenn die XML-Deklaration vorhanden wäre, wäre das XML ungültig. Es würde von einem anderen Element umschlossen werden, das ungültig wäre. –

+1

John, kannst du diesen Kommentar erklären? Ich bin nur neugierig, was du hier meinst. Dies mag meine Unkenntnis von XML sein, aber wie macht es die Gültigkeit der XML-Deklaration an der Spitze des Dokuments für ungültig? –

+0

Gibt es Möglichkeiten, dies zu tun, ohne das XML manuell zu generieren? Zum Beispiel bei der Verwendung von MemberContracts? – Godspark

Verwandte Themen