將 SOAP 追蹤支援加入用戶端應用程式

在 SQL Server 2005 中開發原生 XML Web Service 的 Web 用戶端應用程式時,有一個有用的疑難排解工具可用來追蹤和觀察 SQL Server 執行個體和用戶端應用程式之間交換的 SOAP 訊息。

此主題特別討論用來實作 SOAP 延伸模組標頭的範例類別程式庫,它支援從 Visual Studio 2005 對用戶端應用程式專案的 SOAP 追蹤。與專案整合時,這些延伸模組會追蹤和顯示 SOAP 要求和回應訊息的實際內容。

這個程式庫可以加入現有的 Visual Studio 2005 SOAP 用戶端專案中。這包含<傳送原生 HTTP SOAP 要求的範例應用程式>中所提供的範例應用程式。建議您先熟悉<設定伺服器接聽原生 XML Web Service 要求>和<撰寫用戶端應用程式>中所提供的概念和程序資訊。

此外,如果不熟悉 SOAP 訊息的格式,請參閱下列主題:

ms176041.note(zh-tw,SQL.90).gif附註:
下列程序假設,您已使用 Visual Studio 2005 建立現有 SOAP 用戶端應用程式,並將 Web 參考加入到使用 SQL Server 2005 建立的 HTTP SOAP 結束點,如<使用 Visual Studio 2005 用戶端 (C#) 傳送 SOAP 要求>中所示。

若要將 SOAP 追蹤範例程式庫加入到 Visual Studio 專案

  1. 使用 [記事本],複製並貼上<SQL SOAP 追蹤範例類別程式庫的 C# 程式碼列表>的內容,在包含 SOAP 用戶端專案檔案的相同資料夾中,將此內容另存成名為 "SqlSoapTracer.cs" 的檔案。

  2. 在用戶端電腦上,從 Microsoft Visual Studio 2005 程式群組,啟動 Microsoft Visual Studio 2005。

  3. 按一下 [開啟專案]

  4. 瀏覽和選取 SOAP 用戶端專案 (.csproj) 檔。

  5. 在 [方案總管] 視窗中,執行下列步驟:

    1. 依名稱選取專案,按一下滑鼠右鍵,再指向 [加入],然後選取 [加入現有項目]
    2. [加入現有項目] 對話方塊中,從步驟 1 中的儲存位置,瀏覽和選取 SqlSoapTracer.cs 檔案。
    3. 選取 [顯示所有檔案],展開 [Web 參考] 節點,並選取 Reference.cs 檔案。
  6. 在 [程式碼編輯器] 視窗中,在 Reference.cs 檔案中找出 Web 方法的進入點,以更新此檔案。

    例如,如果您要將 SOAP 追蹤支援加入至<使用 Visual Studio 2005 用戶端 (C#) 傳送 SOAP 要求>中所提供之範例專案,這個專案所包含之各種 Web 方法的發行 Web 方法進入點如下所示:

    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]));
            }
    
  7. 若要在用戶端程式碼中執行 Web 方法時加入 SOAP 追蹤支援,請在 Reference.cs 程式碼中加入以下的 snoopattribute() 呼叫,直接放在所要追蹤之每個 Web 方法的進入點,如以下程式碼行所示。

    [snoopattribute()]
    public object[] GetCustomerInfo(...) {...}
    ...
    [snoopattribute()]
    public System.Data.SqlTypes.SqlInt32 UDFReturningAScalar() {...}
    

    這樣會註冊 SOAP 延伸模組,當這些 Web 方法執行時,用來叫用這些 Web 方法的 SOAP 追蹤。

使用 SOAP 追蹤支援來測試應用程式

在 Visual Studio 開發環境中執行 SOAP 用戶端應用程式時,若要使用以上程式碼所提供的 SOAP 追蹤支援延伸模組,您必須完成下列步驟:

  1. 使用 SQL Server Management Studio 或 osql 命令公用程式,加入 Web 方法,以公開要在結束點上測試的預存程序或使用者自訂函數。
    如需詳細資訊,請參閱<在 Web 上公開 SQL 可程式性>。
  2. 在 Visual Studio 中,對 SOAP 用戶端應用程式專案進行編碼、偵錯和建置 (如果尚未執行)。
    另外,您也可以使用<使用 Visual Studio 2005 用戶端 (C#) 傳送 SOAP 要求>中所提供的範例專案。
  3. 如上節所述,將 SqlSoapTracer.cs 類別加入至專案。
  4. 在 Visual Studio 開發環境中,儲存、建立和執行用戶端應用程式。
    藉由執行應用程式,會建立 Windows 剪貼簿檢視器物件。在步驟 3 中已啟用追蹤的 Web 方法執行時,這個檢視器物件會顯示每個 Web 方法的下列資訊:
    • SOAP 用戶端要求訊息,由用戶端程式碼所產生。
    • SOAP 伺服器回應訊息,由 SQL Server 2005 原生 XML Web Service 所傳回。
      若要在追蹤活動發生之後,檢視剪貼簿的內容,您可以將目前 Windows 剪貼簿內容貼入 [記事本]。

SOAP 追蹤支援的運作方式

此追蹤機制使用 SQL Server 2005 原生 XML Web Service 實作中的預先定義回呼和事件。這些包括兩個事件:BeforeSerializeAfterSerialize

這些事件和回呼允許設陷 SOAP 要求及對應的 SOAP 回應 (來自伺服器),並重新導向到輸出資料流。在輸入的程式碼中,輸出會重新導向到 System.Windows.Forms.Clipboard 物件。Clipboard 物件會接收並顯示執行直接在 snoopattribute() 呼叫之前的 Web 方法交換的 SOAP 用戶端要求和伺服器回應訊息。

用戶端要求的輸出和 SQL Server 所發出的回應,分別使用SOAP 要求訊息結構SOAP 回應訊息結構的類似格式。如果 Web 方法執行成功,在回應中也會出現伺服器所產生的所有結果,例如序列化 XML 輸出。在發生錯誤的狀況下,在伺服器所傳回的回應中,會出現 SOAP 錯誤訊息結構,取代序列化 XML 輸出。

請參閱

參考

設定伺服器接聽原生 XML Web Service 的要求
傳送原生 XML Web Service 要求的範例應用程式

概念

使用原生 XML Web Service 的最佳作法

說明及資訊

取得 SQL Server 2005 協助