Senden von SOAP-Anforderungen mithilfe des Visual Studio 2005-Clients (C#)

In diesem Thema wird eine Beispielanwendung beschrieben, in der ein Visual Studio 2005-Client SOAP-Anforderungen an eine Instanz von SQL Server 2005 sendet und die SOAP-Antwort verarbeitet. Die Anforderungen werden für die in Beispielanwendungen für das Senden systemeigener XML-Webdiensteanforderungen 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.

ms180802.note(de-de,SQL.90).gifHinweis:
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-Webdiensteanforderungen 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

  1. Starten Sie auf dem Clientcomputer Microsoft Visual Studio 2005 über die Programmgruppe Microsoft Visual Studio 2005.
  2. Klicken Sie auf Neues Projekt.
  3. Wählen Sie Visual C#-Projekte als Projekttyp aus.
  4. Geben Sie NativeSOAPApp1 als Projektnamen an.
  5. Geben Sie den Speicherort an, an dem Sie das Projekt speichern möchten.
  6. Wählen Sie als Vorlage die Windows-Anwendung aus, und klicken Sie anschließend auf OK.
  7. 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.
  8. Geben Sie im Feld Adressehttps://Server/sql?wsdl ein, und drücken Sie die EINGABETASTE. Beachten Sie, dass Sie den Servernamen in den URL eingeben müssen.
  9. 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

  1. 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.
  2. Fügen Sie in Form1 ein Textfeld (textBox1), eine Schaltfläche (button1) und ein Listenfeld (listBox1) hinzu.
  3. 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.
  4. Klicken Sie mit der rechten Maustaste auf button1, und klicken Sie dann auf Eigenschaften.
    1. Ändern Sie den Text-Eigenschaftswert von button1 in ExecSP.
    2. Ändern Sie den (name)-Eigenschaftswert in ExecSP.
  5. Klicken Sie mit der rechten Maustaste auf das Textfeld (listBox1), und klicken Sie dann auf Eigenschaften. Ändern Sie den HorizontalScrollbar-Eigenschaftswert in True.
  6. Doppelklicken Sie auf ExecSP.
  7. Kopieren Sie den Code aus C#-Codeliste für ExecSP in diese Funktion.
  8. 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.
  9. 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.

  1. Fügen Sie in Form1 auf der Registerkarte [Entwurf] eine weitere Schaltfläche (button1) hinzu.
  2. Klicken Sie mit der rechten Maustaste auf diese neue Schaltfläche, und klicken Sie dann auf Eigenschaften.
    1. Ändern Sie den Text-Eigenschaftswert von button1 in BatchQueryFindAllEmps.
    2. Ändern Sie den (name)-Eigenschaftswert in BatchQueryFindAllEmps.
  3. Doppelklicken Sie auf BatchQueryFindAllEmps.
  4. Kopieren Sie den Code aus C#-Code für BatchQueryFindAllEmps in diese Funktion.
  5. 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.
  6. 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.

  1. Fügen Sie in Form1 auf der Registerkarte [Entwurf] eine Schaltfläche (button1) hinzu.
  2. Klicken Sie mit der rechten Maustaste auf diese neue Schaltfläche, und klicken Sie dann auf Eigenschaften.
    1. Ändern Sie den Text-Eigenschaftswert von button1 in BatchQueryFindAnEmp.
    2. Ändern Sie den (name)-Eigenschaftswert in BatchQueryFindAllEmps.
  3. Doppelklicken Sie auf BatchQueryFindAnEmp.
  4. Kopieren Sie den Code aus C#-Codeauflistung für BatchQueryFindAnEmp in diese Funktion.
  5. 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.
  6. 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.

  1. Fügen Sie in Form1 auf der Registerkarte [Entwurf] eine Schaltfläche (button1) hinzu.
  2. Klicken Sie mit der rechten Maustaste auf diese neue Schaltfläche, und klicken Sie dann auf Eigenschaften.
    1. Ändern Sie den Text-Eigenschaftswert von button1 in ExecUDFReturningScalar.
    2. Ändern Sie den (name)-Eigenschaftswert in ExecUDFReturningScalar.
  3. Doppelklicken Sie auf ExecUDFReturningScalar.
  4. Fügen Sie dieser Funktion den Code aus dem Thema C#-Code-Liste für ExecUDFReturningScalar hinzu.
  5. 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.
  6. Speichern und kompilieren Sie das Projekt. Weitere Informationen finden Sie im vorherigen Abschnitt zum Kompilieren des Codes.
  7. 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.

ms180802.note(de-de,SQL.90).gifHinweis:
Falls Sie entweder die SQL Server-Authentifizierung oder die Standardauthentifizierung verwenden, erfordert SQL Server 2005, 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 2005 installiert Microsoft .NET Framework 2.0 als Teil 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

  1. Speichern Sie das gesamte Projekt.
  2. Öffnen Sie die Eingabeaufforderung, und suchen Sie den Ordner, in dem das Projekt gespeichert ist.
  3. 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.
  4. 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.
ms180802.note(de-de,SQL.90).gifHinweis:
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

Verweis

Festlegen, dass der Server Anforderungen systemeigener XML-Webdienste überwacht
Struktur der SOAP-Anforderungs- und -Antwortnachrichten
Beispielanwendungen für das Senden systemeigener XML-Webdiensteanforderungen
Richtlinien und Einschränkungen für die Verwendung der systemeigenen XML-Webdienste

Konzepte

Bewährte Methoden für das Verwenden systemeigener XML-Webdienste

Andere Ressourcen

Schreiben von Clientanwendungen

Hilfe und Informationen

Informationsquellen für SQL Server 2005