VS2010 verwechselt System.Xml.XmlElement mit System.Xml.Linq.XElement?

8

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?

    
Chau 18.05.2010, 08:26
quelle

3 Antworten

20

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.

    
Mark Harrington 15.06.2011 18:34
quelle
4

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

    
Robert Nadar 17.12.2010 06:45
quelle
-1

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.

    
Chau 19.05.2010 08:19
quelle

Tags und Links