Senden von SOAP-Anforderungen mithilfe des Visual Studio 2005-Clients (C#)
Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird.
In diesem Thema wird eine Beispielanwendung beschrieben, in der ein Visual Studio 2005-Client SOAP-Anforderungen an eine Instanz von SQL Server sendet und die SOAP-Antwort verarbeitet. Die Anforderungen werden für die in Beispielanwendungen für das Senden systemeigener XML-Webdienstanforderungen erstellten Endpunktmethoden gesendet.
Zum Verwenden dieser Anwendung empfiehlt es sich, die unter Festlegen, dass der Server Anforderungen systemeigener XML-Webdienste überwacht und Schreiben von Clientanwendungen angegebenen Informationen zu Konzept und Verfahren zu kennen.
Hinweis |
---|
Für diese Beispielanwendung ist eine Erstinstallation erforderlich. Bevor Sie den Vorgang mit der Beispielanwendung fortsetzen, befolgen Sie die unter Beispielanwendungen für das Senden systemeigener XML-Webdienstanforderungen beschriebenen Schritte. |
Senden von SOAP-Anforderungen
In dieser Anwendung richten Sie ein Formular mit den Schaltflächen und Textfeldern ein, die für das Senden von SOAP-Anforderungen an den Endpunkt erforderlich sind.
Wenn eine SOAP-Anforderung für die gespeicherte GetCustomerInfo-Prozedur gesendet wird, wird der in einem Textfeld angegebene Customer ID-Wert als Eingabeparameter übergeben. Falls im Textfeld kein Wert angegeben wurde, wird eine leere Zeichenfolge angenommen, und es werden Kunden, die als CustomerID-Wert eine leere Zeichenfolge aufweisen, zurückgegeben. Falls NULL (null) eingegeben wird, werden Kunden, die für CustomerID den Wert NULL aufweisen, zurückgegeben. Beachten Sie, dass in diesem Fall das xsi:nil = 'true'-Attribut automatisch der SOAP-Anforderung hinzugefügt wird, um den Parameterwert NULL anzugeben.
Die gespeicherte GetCustomerInfo-Prozedur soll zeigen, wie Eingaben, Ausgabeparameter, Fehlermeldungen und Ergebnisse verarbeitet werden. Die Anwendung sendet auch SOAP-Anforderungen für die benutzerdefinierte Funktion. Sie sendet zudem SOAP-Anforderungen für die folgenden Ad-hoc-Abfragen:
SELECT-Abfrage zum Abrufen aller Mitarbeiter.
SELECT-Abfrage, um einen Mitarbeiter abzurufen, dessen ID als Eingabe angegeben ist.
Verarbeiten der SOAP-Antworten
Wenn die Ergebnisse einer SOAP-Anforderung als ein Objektarray zurückgegeben werden, identifiziert die Clientanwendung den Typ der einzelnen Objekte im Array und verarbeitet die Objekte anschließend entsprechend. Die Anwendung zeigt dann die folgenden Informationen zu den einzelnen Objektarrayelementen an:
Den Datentyp des Werts im Arrayelement.
Den Wert: Resultset, Rückgabecode, Ausgabeparameterwerte usw.
Erstellen eines Beispiels
Da für die Erstellung dieses Beispiels viele Schritte ausgeführt werden müssen, wird die Anwendung in fünf Teile aufgeteilt:
Teil 1: Ausführen der gespeicherten GetCustomerInfo-Prozedur
Teil 2: Ausführen von SP
Teil 3: Ausführen der SQL-Abfrage ohne Parameter
Teil 4: Ausführen der SQL-Abfrage mit Parametern
Teil 5: Ausführen der benutzerdefinierten Funktion
Jeder Teil stellt eine Reihe von Anweisungen bereit. Am Ende der einzelnen Teile können Sie die Anwendung testen.
Teil 1: Ausführen der gespeicherten GetCustomerInfo-Prozedur
Starten Sie auf dem Clientcomputer Visual Studio 2005 über die Programmgruppe Microsoft Visual Studio 2005.
Klicken Sie auf Neues Projekt.
Wählen Sie Visual C#-Projekte als Projekttyp aus.
Geben Sie NativeSOAPApp1 als Projektnamen an.
Geben Sie den Speicherort an, an dem Sie das Projekt speichern möchten.
Wählen Sie als Vorlage die Windows-Anwendung aus, und klicken Sie anschließend auf OK.
Klicken Sie im Projektmappen-Explorer-Fenster mit der rechten Maustaste auf Verweise, und klicken Sie dann auf Webverweis hinzufügen. Sie können einen Webverweis auch hinzufügen, indem Sie Webverweis hinzufügen im Menü Projekt auswählen.
Geben Sie im Feld Adressehttps://Server/sql?wsdl ein, und drücken Sie die EINGABETASTE. Beachten Sie, dass Sie den Servernamen in die URL eingeben müssen.
Klicken Sie auf Verweis hinzufügen. Auf diese Weise werden die erforderlichen Proxyklassen erstellt, sodass Sie die Methoden im WSDL-Dokument aufrufen können.
Teil 2: Ausführen von SP
Klicken Sie im Menü Ansicht auf Toolbox, um die Toolbox im Bereich Form1.cs [Design] zu öffnen. Sie können auch STRG + ALT + X drücken, um die Toolbox zu öffnen.
Fügen Sie in Form1 ein Textfeld (textBox1), eine Schaltfläche (button1) und ein Listenfeld (listBox1) hinzu.
Klicken Sie mit der rechten Maustaste auf das Textfeld, und klicken Sie dann auf Eigenschaften. Ändern Sie den Text-Wert von textBox1 in 1. Dies ist der Standardwert für Customer ID.
Klicken Sie mit der rechten Maustaste auf button1, und klicken Sie dann auf Eigenschaften.
Ändern Sie den Text-Eigenschaftswert von button1 in ExecSP.
Ändern Sie den (name)-Eigenschaftswert in ExecSP.
Klicken Sie mit der rechten Maustaste auf das Textfeld (listBox1), und klicken Sie dann auf Eigenschaften. Ändern Sie den HorizontalScrollbar-Eigenschaftswert in True.
Doppelklicken Sie auf ExecSP.
Kopieren Sie den Code aus der C#-Codeliste für ExecSP in diese Funktion.
Aktualisieren Sie den Code. Ändern Sie die Verweise auf server durch den Hostnamen, der identifiziert wurde, als der Endpunkt mithilfe von CREATE ENDPOINT erstellt wurde.
Speichern und kompilieren Sie das Projekt. Weitere Informationen finden Sie im vorherigen Abschnitt zum Kompilieren des Codes.
Teil 3: Ausführen der SQL-Abfrage ohne Parameter
Dieser Teil der Clientanwendung führt eine Ad-hoc-Abfrage aus (FOR XML-Abfrage), die Mitarbeiter aus der Employee-Tabelle in der AdventureWorks-Datenbank aufruft.
Fügen Sie in Form1 auf der Registerkarte [Entwurf] eine weitere Schaltfläche (button1) hinzu.
Klicken Sie mit der rechten Maustaste auf diese neue Schaltfläche, und klicken Sie dann auf Eigenschaften.
Ändern Sie den Text-Eigenschaftswert von button1 in BatchQueryFindAllEmps.
Ändern Sie den (name)-Eigenschaftswert in BatchQueryFindAllEmps.
Doppelklicken Sie auf BatchQueryFindAllEmps.
Kopieren Sie den Code aus der C#-Codeliste für BatchQueryFindAllEmps in diese Funktion.
Aktualisieren Sie den Code. Ändern Sie die Verweise auf server durch den Hostnamen, der identifiziert wurde, als der Endpunkt mithilfe von CREATE ENDPOINT erstellt wurde.
Speichern und kompilieren Sie das Projekt. Weitere Informationen finden Sie im vorherigen Abschnitt zum Kompilieren des Codes.
Teil 4: Ausführen der SQL-Abfrage mit Parametern
Dieser Teil ähnelt dem vorherigen Teil, außer dass die SOAP-Anforderung für die Ad-hoc-Abfrage einen Abfrageparameter einschließt. Die FOR XML-Abfrage ruft Mitarbeiterinformationen für die angegebene Mitarbeiter-ID ab.
Fügen Sie in Form1 auf der Registerkarte [Entwurf] eine Schaltfläche (button1) hinzu.
Klicken Sie mit der rechten Maustaste auf diese neue Schaltfläche, und klicken Sie dann auf Eigenschaften.
Ändern Sie den Text-Eigenschaftswert von button1 in BatchQueryFindAnEmp.
Ändern Sie den (name)-Eigenschaftswert in BatchQueryFindAllEmps.
Doppelklicken Sie auf BatchQueryFindAnEmp.
Kopieren Sie den Code aus der C#-Codeliste für BatchQueryFindAnEmp in diese Funktion.
Aktualisieren Sie den Code. Ändern Sie die Verweise auf server durch den Hostnamen, der identifiziert wurde, als der Endpunkt mithilfe von CREATE ENDPOINT erstellt wurde.
Speichern und kompilieren Sie das Projekt. Weitere Informationen finden Sie im vorherigen Abschnitt zum Kompilieren des Codes.
Teil 5: Ausführen der benutzerdefinierten Funktion
In diesem Teil sendet die Clientanwendung eine SOAP-Anforderung für die UDFReturningScalar-Webmethode. Diese Webmethode entspricht einer benutzerdefinierten Funktion, die einen Wert für ganze Zahlen zurückgibt.
Fügen Sie in Form1 auf der Registerkarte [Entwurf] eine Schaltfläche (button1) hinzu.
Klicken Sie mit der rechten Maustaste auf diese neue Schaltfläche, und klicken Sie dann auf Eigenschaften.
Ändern Sie den Text-Eigenschaftswert von button1 in ExecUDFReturningScalar.
Ändern Sie den (name)-Eigenschaftswert in ExecUDFReturningScalar.
Doppelklicken Sie auf ExecUDFReturningScalar.
Fügen Sie den Code aus der C#-Codeliste für ExecUDFReturningScalar dieser Funktion hinzu.
Aktualisieren Sie den Code. Ändern Sie die Verweise auf server durch den Hostnamen, der identifiziert wurde, als der Endpunkt mithilfe von CREATE ENDPOINT erstellt wurde.
Speichern und kompilieren Sie das Projekt. Weitere Informationen finden Sie im vorherigen Abschnitt zum Kompilieren des Codes.
Klicken Sie auf ExecUDFReturningScalar. Der Rückgabewert aus der benutzerdefinierten Funktion wird im Listenfeld angezeigt.
Da der Endpunkt die integrierte Authentifizierung angibt, wird folgende Zeile im Code angezeigt: proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
Falls Sie die SQL Server-Authentifizierung verwenden, empfiehlt es sich, diese Zeile zu entfernen und durch den Code zu ersetzen, der die WS-Security-Header implementiert, um SQL Server-basierte Anmeldeinformationen für die Authentifizierung bereitzustellen. Weitere Informationen finden Sie unter SQL Server-Authentifizierung über SOAP.
Hinweis |
---|
Falls Sie entweder die SQL Server-Authentifizierung oder die Standardauthentifizierung verwenden, erfordert SQL Server, dass Sie Secure Sockets Layer (SSL) für die sichere verschlüsselte Übertragung der Anmeldeinformationen des Benutzers verwenden, die anderenfalls als Klartext sichtbar wären. Weitere Informationen dazu, wie SSL für die Verwendung mit HTTP-Endpunkten aktiviert wird, finden Sie unter Konfigurieren eines Zertifikats zur Verwendung durch SSL. |
Kompilieren des Codes
SQL Server installiert .NET Framework 2.0 im Rahmen des Installationsvorgangs. Diese Kompilierungsanweisungen verwenden die neueste .NET Framework-Version. (Die höchste Nummer im Ordner \WINDOWS\Microsoft.NET\Framework.)
So kompilieren Sie den Beispielcode
Speichern Sie das gesamte Projekt.
Öffnen Sie die Eingabeaufforderung, und suchen Sie den Ordner, in dem das Projekt gespeichert ist.
Kopieren Sie in diesem Ordner die Datei Reference.cs aus dem Unterordner Web Reference\Server. (Kopieren Sie z. B. "Web Reference\Server\Reference.cs".) Die Dateien Form1.cs und Reference.cs sollten sich im selben Ordner befinden.
Kompilieren Sie den Code, und geben Sie den Namen der ausführbaren Datei (.exe) an. Wenn beispielsweise der Name der ausführbaren Datei NativeSOAPApp1.exe lautet, sähe die Befehlszeile wie folgt aus:
\WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx\csc.exe /out:NativeSOAPApp1.exe Form1.cs Reference.cs
xxxxx ist die Ordnernummer, die der .NET Framework-Version entspricht.
Dieser Vorgang erstellt die ausführbare Datei (NativeSOAPApp1.exe) im aktuellen Verzeichnis.
Wenn Sie eine frühere Version von .NET Framework verwenden, finden Sie möglicherweise einen Laufzeitfehler. Versuchen Sie in diesem Fall, die gespeicherte GetCustomerInfo-Prozedur zu aktualisieren, indem Sie die FOR XML AUTO-Klausel am Ende der SELECT-Anweisung hinzufügen, wie im Folgenden dargestellt:
SELECT TOP 3 SalesOrderID, OrderDate
FROM SalesOrderHeader
WHERE CustomerID = @CustomerID
FOR XML AUTO
Die Ergebnisse der Ausführung der gespeicherten Prozedur werden im Listenfeld angezeigt.
Siehe auch