Klimmbimm 10 Geschrieben 13. Juli 2009 Melden Teilen Geschrieben 13. Juli 2009 Hallo zusammen, bin mal wieder auf ein Problem mit Webservices in C# gestoßen: ich möchte einen Objekte von einem eigenen Datentyp "Benutzer" per Webservice verschicken. Später dann auch eine generische List<Benutzer>. Geht das ohne Weiteres? Was muss ich beachten? Der Benutzer sieht momentan so aus: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ClassLibrary1 { public class Benutzer { public int db_id; public string login; public string vorname; public string nachname; public string email; public int anwendung_id; public string password_verschluesselung; } } Webservice: using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Linq; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Xml.Linq; using ClassLibrary1; namespace WebService1 { /// <summary> /// Zusammenfassungsbeschreibung für Service1 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] // Um das Aufrufen dieses Webdiensts aus einem Skript mit ASP.NET-AJAX zuzulassen, heben Sie die Auskommentierung der folgenden Zeile auf. // [system.Web.Script.Services.ScriptService] public class Service1 : System.Web.Services.WebService { [WebMethod] public Benutzer GetBenutzer() { Benutzer b = new Benutzer(); b.vorname = "Hans"; b.nachname = "Hahn"; return b; } } } Konsolenanwendung, die Benutzer von Webservice holen soll: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ClassLibrary1; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { ServiceReference1.Service1SoapClient client = new ServiceReference1.Service1SoapClient(); Benutzer hans = (Benutzer)client.GetBenutzer(); Console.Write(hans.vorname + " " + hans.nachname); } } } Leider kommt folgende Fehlermeldung beim Starten des Clients: Fehler 1 Eine Konvertierung vom Typ "ConsoleApplication1.ServiceReference1.Benutzer" in "ClassLibrary1.Benutzer" ist nicht möglich. C:\Temp\Test_eigeneDatentypen\ConsoleApplication1\Program.cs 14 29 ConsoleApplication1 Meine bisherigen Recherchen haben ergeben, dass Attribute "public" sein müssen (hab ich ja gemacht) und das ganze Objekt serialisierbar sein muss, um per Webservice (der ja auf XML-Nachrichten/ Zeichenketten beruht) verschickt zu werden. Muss ich dazu noch den Namespace System.Xml.Serialization importieren und aufwendig "per Hand" serialisieren? Ich habe auch folgenden Artikel gelesen: http://www.microsoft.com/germany/msdn/solve/knowhow/howto/webentwicklung/WieErstelleIchEinenSOAPWebserviceMitBenutzerdefiniertenDatentypenMitASPNET.mspx#top Dort wird ein neuer Datentyp "SystemInfo" verschickt - ohne jeglichen manuellen Serialisierungen. So richtig verstanden hab ich das aber nicht. Freue mich auf eure Hilfe. Gruß, KB Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.