Ich habe einen WCF-Dienst mit einer Methode erstellt, die ein System.Xml.XmlElement
zurückgibt:
Schnittstelle:
%Vor%Service:
%Vor%Wenn ich versuche, auf den auf meinem Server bereitgestellten Dienst zuzugreifen
%Vor%Ich bekomme den Fehler:
Der Typ 'System.Xml.Linq.XElement' kann nicht implizit in 'System.Xml.XmlElement'
konvertiert werden
Wenn ich meine Servicelösung durchsuche, kann ich keinen Verweis auf System.Xml.Linq.XElement
sehen. Ist es falsch von mir, ein System.Xml.XmlElement
zu erwarten oder ist VS 2010 mit mir herumalbern?
Was ich gefunden habe, funktioniert am besten und am einfachsten für mich, wenn Sie mit der rechten Maustaste auf die Service-Referenz klicken und dann auf "Service-Referenz konfigurieren" klicken. Unten im Dialogfeld finden Sie zwei Optionsfelder mit der Aufschrift "Wiederverwendung von Typen in alle referenzierten Assemblys" oder "Wiederverwendung von Typen in angegebenen referenzierten Assemblys". Klicken Sie auf die 2. Option für 'spezifizierte Baugruppen'. Die Listbox wird dann aktiviert und Sie können alle Assemblys überprüfen und System.Xml.Linq unchecked verlassen. Auf diese Weise erhalten Sie bei jeder Aktualisierung der Service-Referenz die erwarteten Ergebnisse, die in der Konfiguration des Clients gespeichert werden.
1) Entfernen Sie die Referenz system.xml.linq von Ihrem Client 2) Aktualisieren Sie Ihre Servicereferenz 3) Die neu generierte Reference.cs-Datei referenziert nun XmlElement anstelle von XElement
Ich hasse es, meine eigene Frage zu beantworten, aber hier geht es:
Soweit ich sehen kann, kann System.Xml.XmlElement
als Rückgabetyp für einen WCF-Dienst verwendet werden. Das standardmäßig in WCF verwendete DataContractSerializer
unterstützt diesen Typ und sollte daher nicht verwendet werden notwendig, um XmlSerializer
zu verwenden.
Allerdings hat mein Problem nichts mit Serialisierung zu tun, aber dank Raj Kaimal , dass ich diese Möglichkeit vorgeschlagen habe.
Ich habe die WCF-Tutorials von Microsoft verfolgt, die Ihnen mitteilen Sie fügen den WCF-Service als Service-Referenz hinzu, wenn Sie den Service verwenden möchten. Dies scheint in VS2008 in Ordnung zu sein, aber beim Wechsel zu VS2010 ist dieser Ansatz ändert den Rückgabetyp von System.Xml.XmlElement
in den (neueren?) System.Xml.Linq.XElement
. Um dies zu beheben, müssen Sie den Dienst stattdessen als Web-Referenz hinzufügen.
Tags und Links wcf c# xml-serialization