Jump to content

Klimmbimm

Members
  • Gesamte Inhalte

    5
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von Klimmbimm

  1. 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: 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
  2. also meine testanwendung funktioniert jetzt!!! kam mir auch relativ schnell vor: ca. 200 datensätze in ein dateset geladen und zurückgegeben -> ca. 1 oder 2 sekunden (ich schätze mal, dass die meiste zeit noch drauf ging um den browser zu öffnen - hab halt nur debuggt) Danke sehr, phoenixcp!
  3. hm, achso, davon höre ich grade zum ersten mal. also muss ich mir zuerst noch was dazu installieren? ich dachte die .NET Bibliotheken wären so schön umfangreich. Gibt es da kein "Hausmittel", dass auch MySQL-Verbindungen kann? Ich werds mal mit dem genannten mySQL-Connector testen... melde mich dann nochmal. EDIT: nehme den connector 6.0 (http://dev.mysql.com/downloads/connector/net/6.0.html )
  4. also die Datenbank liegt aus einem Suse 10.3 Rechner. Da läuft ein MySQL_Server in der Version 5.0.45. Soweit ich das rausfinden konnte, unterstützt dieses Datenbankmanagementsystem keine Named Pipes. Deswegen würde ich die gerne im Visual Studio ausschalten und über ein anderes Protokoll gehen (TCP/IP?). mit dem SQL Query Browser funktioniert die verbindung von dem gleichen rechner aus zur Datenbank. EDIT: anscheinend kann ich über tcp/ip gehen, indem ich dem conBuilder.DataSource = "134.130.88.5,1433" setze. leider kommt dann eine andere fehlermeldung, nämlich:
  5. Hallo zusammen! Ich habe einen kleinen Webservice gebastelt, der einen Datensatz aus einer entfernten Datenbank an das aufrufende Programm liefern soll. Leider bekomme ich immer folgende Fehlermeldung: Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden. Überprüfen Sie, ob der Instanzname richtig ist und ob SQL Server Remoteverbindungen zulässt. (provider: Named Pipes-Provider, error: 40 - Verbindung mit SQL Server konnte nicht geöffnet werden) Mit anderen Programmen, zB dem SQL Query Browser, kann ich auf die Daten zugreifen. Um den Code, der den Fehler produziert auf ein Minimum zu reduzieren, habe ich mal folgedes Programm getippt: 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 System.Data.SqlClient; using System.IO; using System.Text; namespace Test_DB_Operationen { /// <summary> /// Zusammenfassungsbeschreibung für Service1 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] public class Service1 : System.Web.Services.WebService { // Benutzer senden [WebMethod] public string GetUsers() { DataSet ds = new DataSet(); SqlConnectionStringBuilder conBuilder = new SqlConnectionStringBuilder(); conBuilder.DataSource = "192.168.0.100"; conBuilder.InitialCatalog = "Benutzerdaten"; conBuilder.UserID = "DB_Benutzername"; conBuilder.Password = "DB_Passwort"; SqlConnection con = new SqlConnection(conBuilder.ConnectionString); try { con.Open(); } catch (Exception e) { con.Close(); return e.Message; } con.Close(); return conBuilder.ConnectionString; } } } Ausgabe: <?xml version="1.0" encoding="utf-8" ?> <string xmlns="http://tempuri.org/">Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden. Überprüfen Sie, ob der Instanzname richtig ist und ob SQL Server Remoteverbindungen zulässt. (provider: Named Pipes-Provider, error: 40 - Verbindung mit SQL Server konnte nicht geöffnet werden)</string> Was muss ich machen, um an die Daten in der Datenbank heranzukommen? Ich weiß leider nicht mehr weiter... Gruß, KB
×
×
  • Neu erstellen...