Jump to content

Eigene Datentypen über C# Webservice schicken


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...