Hinzufügen der Unterstützung für die SOAP-Ablaufverfolgung zu Clientanwendungen
Beim Entwickeln von Webclientanwendungen für systemeigene XML-Webdienste in SQL Server 2005 bietet die Möglichkeit, SOAP-Nachrichten zu beobachten und nachzuverfolgen, die zwischen einer Instanz von SQL Server und Ihrer Clientanwendung ausgetauscht werden, ein hilfreiches Tool zur Problembehandlung.
Dieses Thema enthält eine Beispielklassenbibliothek, die SOAP-Erweiterungsheader implementiert, die die SOAP-Ablaufverfolgung von Clientanwendungsprojekten innerhalb von Visual Studio 2005 unterstützen. Wenn Sie diese Erweiterungen in Ihr Projekt einbinden, führen sie die Ablaufverfolgung aus und zeigen den Inhalt der SOAP-Anforderungs- und entsprechenden Antwortnachrichten an.
Diese Bibliothek kann vorhandenen SOAP-Clientprojekten von Visual Studio 2005 hinzugefügt werden. Sie umfasst die Beispielanwendungen, die unter Beispielanwendungen für das Senden systemeigener XML-Webdiensteanforderungen bereitgestellt werden. Es wird empfohlen, dass Sie sich mit den konzeptionellen und prozedurbezogenen Informationen vertraut machen, die unter Festlegen, dass der Server Anforderungen systemeigener XML-Webdienste überwacht und Schreiben von Clientanwendungen bereitgestellt werden.
Wenn Sie mit dem Format von SOAP-Nachrichten nicht vertraut sind, finden Sie weitere Informationen dazu in den folgenden Themen:
- Struktur der SOAP-Anforderungsnachricht
- Struktur der SOAP-Antwortnachricht
- Struktur der SOAP-Fehlernachricht
Hinweis: |
---|
Das folgende Verfahren geht davon aus, dass Sie eine SOAP-Clientanwendung mit Visual Studio 2005 erstellt und einen Webverweis auf einen HTTP-SOAP-Endpunkt hinzugefügt haben, der mit SQL Server 2005 erstellt wurde, wie unter Senden von SOAP-Anforderungen mithilfe des Visual Studio 2005-Clients (C#) gezeigt. |
So fügen Sie einem Visual Studio-Projekt die Beispielbibliothek für die SOAP-Ablaufverfolgung hinzu
Kopieren Sie mithilfe des Editors den Inhalt der C#-Code-Auflistung für SQL SOAP-Trace-Beispielklassenbibliothek, fügen Sie ihn ein, und speichern Sie ihn dann unter dem Namen "SqlSoapTracer.cs" in dem Ordner, der auch die SOAP-Clientprojektdateien enthält.
Starten Sie auf dem Clientcomputer Microsoft Visual Studio 2005 über die Programmgruppe Microsoft Visual Studio 2005.
Klicken Sie auf Projekt öffnen.
Suchen Sie die SOAP-Clientprojektdatei (CSPROJ-Datei), und wählen Sie diese aus.
Führen Sie im Fenster des Projektmappen-Explorers folgende Schritte aus:
- Wählen Sie das Projekt anhand des Namens aus, klicken Sie mit der rechten Maustaste, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Vorhandenes Element hinzufügen.
- Suchen Sie im Dialogfeld Vorhandenes Element hinzufügen die Datei SqlSoapTracer.cs in dem Ordner, in dem Sie sie in Schritt 1 gespeichert haben, und wählen Sie sie aus.
- Wählen Sie Alle Dateien anzeigen aus, und erweitern Sie den Knoten Webverweise. Wählen Sie die Datei Reference.cs aus.
Aktualisieren Sie im Fenster des Code-Editors die Datei Reference.cs, indem Sie darin zunächst die Einstiegspunkte für Ihre Webmethoden suchen.
Wenn Sie beispielsweise dem unter Senden von SOAP-Anforderungen mithilfe des Visual Studio 2005-Clients (C#) beschriebenen Beispielprojekt Unterstützung für die SOAP-Ablaufverfolgung hinzufügen, lauten die Einstiegspunkte für die veröffentlichten Webmethoden der verschiedenen Webmethoden in diesem Projekt wie folgt:
public object[] GetCustomerInfo([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] System.Data.SqlTypes.SqlString CustomerID, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] ref System.Data.SqlTypes.SqlString OutputParam) { object[] results = this.Invoke("s2MsgGetCustomerInfoSoapIn", new object[] { CustomerID, OutputParam}); OutputParam = ((System.Data.SqlTypes.SqlString)(results[1])); return ((object[])(results[0])); } ... public System.Data.SqlTypes.SqlInt32 UDFReturningAScalar() { object[] results = this.Invoke("s1MsgUDFReturningAScalarSoapIn", new object[0]); return ((System.Data.SqlTypes.SqlInt32)(results[0])); }
Zum Hinzufügen der Unterstützung für die SOAP-Ablaufverfolgung beim Ausführen der Webmethoden im Clientcode fügen Sie im Code der Datei Reference.cs den folgenden
snoopattribute()
-Aufruf direkt vor dem Einstiegspunkt jeder Webmethode ein, für die Sie die Ablaufverfolgung ausführen möchten, wie in den folgenden Codezeilen gezeigt.[snoopattribute()] public object[] GetCustomerInfo(...) {...} ... [snoopattribute()] public System.Data.SqlTypes.SqlInt32 UDFReturningAScalar() {...}
Auf diese Weise wird eine SOAP-Erweiterung registriert, die die SOAP-Ablaufverfolgung dieser Webmethoden aufruft, wenn diese ausgeführt werden.
Hinzufügen der Unterstützung für die SOAP-Ablaufverfolgung zum Testen Ihrer Anwendung
Führen Sie folgende Schritte aus, um die im vorhergehenden Code bereitgestellten Erweiterungen zur Unterstützung der SOAP-Ablaufverfolgung beim Ausführen von SOAP-Clientanwendungen in der Visual Studio-Entwicklungsumgebung zu verwenden:
- Verwenden Sie entweder das in SQL Server Management Studio bereitgestellte oder das osql-Befehlszeilenprogramm, um eine Webmethode hinzuzufügen, die die zu testende gespeicherte Prozedur oder benutzerdefinierte Funktion auf dem Endpunkt verfügbar machen soll.
Weitere Informationen finden Sie unter Verfügbarmachen der Programmierbarkeit von SQL im Web. - Wenn Sie dies nicht bereits durchgeführt haben, codieren, debuggen und erstellen Sie eine SOAP-Clientanwendung in Visual Studio.
Sie können dazu das unter Senden von SOAP-Anforderungen mithilfe des Visual Studio 2005-Clients (C#) beschriebene Beispielprojekt verwenden. - Fügen Sie dem Projekt die SqlSoapTracer.cs-Klasse hinzu, wie im vorherigen Abschnitt beschrieben.
- Speichern und kompilieren Sie Ihre Clientanwendung, und führen Sie sie in der Visual Studio-Entwicklungsumgebung aus.
Beim Ausführen der Anwendung wird ein Windows-Zwischenablagen-Viewerobjekt erstellt. Wenn jetzt die Webmethoden, für die Sie in Schritt 3 die Ablaufverfolgung aktiviert haben, ausgeführt werden, zeigt das Viewerobjekt für jede Webmethode Folgendes an:- Die SOAP-Clientanforderungsnachricht, wie sie durch den Clientcode generiert wurde.
- Die SOAP-Serverantwortnachricht, wie sie von den systemeigenen XML-Webdiensten für SQL Server 2005 zurückgegeben wurde.
Um den Inhalt der Windows-Zwischenablage nach einer Ablaufverfolgungsaktivität anzuzeigen, können sie ihn in den Windows-Editor einfügen.
Funktionsweise der Unterstützung für die SOAP-Ablaufverfolgung
Der Ablaufverfolgungsmechanismus verwendet vordefinierte Rückrufe und Ereignisse, die Teil der Implementierung der systemeigenen XML-Webdienste in SQL Server 2005 sind. Dabei handelt es sich um zwei Ereignisse: BeforeSerialize und AfterSerialize.
Diese Ereignisse und Rückrufe ermöglichen, dass die SOAP-Anforderung und die entsprechende SOAP-Serverantwort aufgefangen und an einen Ausgabestrom weitergeleitet werden. In dem bereitgestellten Code wird die Ausgabe in ein System.Windows.Forms.Clipboard-Objekt umgeleitet. Das Clipboard-Objekt empfängt die SOAP-Clientanforderungs- und Serverantwortnachrichten, die durch Ausführen der Webmethoden ausgetauscht werden, die den snoopattribute()-Aufrufen unmittelbar vorangestellt sind, und zeigt sie an.
Die Ausgabe der Clientanforderung und die von SQL Server ausgegebene Antwort darauf erfolgt in einem der Struktur der SOAP-Anforderungsnachricht und der Struktur der SOAP-Antwortnachricht gleichenden Format. Vom Server generierte Ergebnisse, wie z. B. die serialisierte XML-Ausgabe einer erfolgreich ausgeführten Webmethode, werden ebenfalls in der Antwort angezeigt. Falls ein Fehler auftritt, wird die Struktur der SOAP-Fehlernachricht anstelle der serialisierten XML-Ausgabe in der vom Server zurückgegebenen Antwort angezeigt.
Siehe auch
Verweis
Festlegen, dass der Server Anforderungen systemeigener XML-Webdienste überwacht
Beispielanwendungen für das Senden systemeigener XML-Webdiensteanforderungen
Konzepte
Bewährte Methoden für das Verwenden systemeigener XML-Webdienste