解決 Web 服務權限問題的指導方針
Microsoft BizTalk Server會大量使用 Web 服務,以便與 SOAP 配接器搭配使用,以及將協調流程發佈為 Web 服務時。 本主題提供一些將 Web 服務許可權問題降至最低的一般指導方針,以及您可以遵循的步驟,針對影響BizTalk Server的 Web 服務許可權問題進行疑難排解。
一般準則
設定使用者帳戶:確定 IIS 應用程式主機進程身分識別與裝載 Web 服務之虛擬目錄相關聯的身分識別已設定為特定的使用者帳戶,並確定此使用者帳戶已新增至下列群組:
BizTalk 外掛式主控件使用者 (網域或本機群組)
IIS_WPG (本機群組)
必須具有這 2 個群組中的成員資格,才能對 BizTalk Web 服務發佈精靈所建立的 Web 服務授與適當的權限,使其可以將 SOAP 要求訊息發佈到 BizTalk MessageBox 資料庫 (此資料庫會啟動定閱協調流程)。 如需判斷或設定 IIS 應用程式 主機 進程識別的詳細資訊,請參閱 解決 IIS 許可權問題的指導方針一節。
設定 TEMP 環境變數所指定資料夾的許可權:確定裝載 Web 服務的虛擬目錄的 IIS 應用程式主機進程識別具有 TEMP 環境變數所指定之資料夾的讀取和寫入權限。 若要判斷 TEMP 環境變數所指定的資料夾,請在BizTalk Server上開啟命令提示字元,輸入下列命令,然後按 ENTER:
echo %TEMP%
TEMP 環境變數所指定的資料夾,即為 Web 服務以 Just In Time (JIT) 方式編繹成動態連結程式庫 (dll) 檔案的位置,因此必須可以藉此使用者帳戶的讀寫權限來存取。
在 SOAP 方法呼叫中傳送認證:確定 Web 服務用戶端正在 SOAP 方法呼叫中傳送認證。 根據預設,Windows Server 2008 SP2 中的 IIS 7.0 需要 Windows 驗證。 使用 Internet Explorer 測試 Web 服務時,會自動傳送目前已登入之使用者的認證,這就是為什麼 Web 服務可以從 Internet Explorer 使用,卻不能從其他用戶端使用的原因。 如果 Web 服務用戶端沒有將認證加入 SOAP 方法呼叫,則會由於驗證失敗而產生 SOAP 例外狀況。 如需在 SOAP 方法呼叫中傳送認證的詳細資訊,請移至 System.Net.Http:HttpClient 類別。
針對呼叫 Web 服務的錯誤進行疑難排解:如果呼叫 Web 服務時發生錯誤,請檢查應用程式記錄檔,或透過 BizTalk Server [系統管理群組中樞] 頁面追蹤訊息事件和服務實例。 如需錯誤可能原因的詳細資訊,請參閱監視BizTalk Server和使用群組中樞頁面。
收集偵錯資訊:若要取得詳細的偵錯資訊,請遵循上述步驟無法解決問題,請遵循針對 已發佈的 Web 服務 進行偵錯主題中所述的步驟。