2 Stimmen

Wenn die WCF-Methode XmlElement zurückgibt, sieht der Client XElement zurückgegeben?

Ich erhalte ein xmlElement aus einer WCF-Methode. Wenn ich im Client einen Serviceverweis erstelle, gibt dieselbe Methode stattdessen XElement zurück. Ich habe alles versucht: Aktualisieren des Serviceverweises, Erstellen eines neuen Serviceverweises, aber es hilft nicht.

Dies ist mein Client:

ServiceReference1.BasicServiceClient basicWCfClient = new ServiceReference1.BasicServiceClient();
        XmlElement xmlelement =  basicWCfClient.GetData(5); 
        basicWCfClient.Close();

Ich erhalte einen Fehler: "Der implizite Typ 'System.Xml.Linq.XElement' kann nicht in 'System.Xml.XmlElement' konvertiert werden."

Wenn die Methode auf der Serverseite ist:

 public XmlElement GetData(int value)
    {
        XmlDocument xmldoc = new XmlDocument();
        xmldoc.LoadXml("HelloWorldMore");
        XmlElement xmlElement = xmldoc.DocumentElement;
        return xmlElement;
     }

Und das Interface:

    [ServiceContract]
public interface IBasicService
{

    [OperationContract]       
    [WebGet(UriTemplate = "GetData?value={value}")] // Unterstützung für HTTP-GET-Anfragen hinzufügen
    XmlElement GetData(int value);}

Was ist los?

13voto

Simon_Weaver Punkte 129442

Gehen Sie zu Service-Referenz konfigurieren und überprüfen Sie Typen in referenzierten Assemblys wiederverwenden

Dann überprüfen Sie System.Xml, wenn Sie XmlElement möchten, oder System.Xml.Linq, wenn Sie XElement möchten

Siehe auch diese Frage

1voto

Ladislav Mrnka Punkte 355028

Nichts ist falsch. Der Client weiß nicht, welcher .NET-Typ verwendet wurde, und der Dienstverweis informiert ihn nur darüber, dass beliebiges XML zurückgegeben werden kann. Es nimmt XML entgegen und stellt es als XElement bereit. Es handelt sich um ein eingebautes Verhalten, und ich glaube, dass es von MS gewählt wurde, weil es eine neuere und komfortablere API bietet. Warum benötigen Sie die Methode, um XmlElement zurückzugeben?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X