HTTP 符號存放區
藉由使用透過 symsrv.dll 支援的 SRV 通訊協定(隨附於調試程式),可以使用 HTTP 來存取符號存放區(而不只是 UNC/SMB)。
當防火牆不允許用戶端與伺服器之間的SMB時,通常會使用 HTTP,而不是SMB。 生產環境與實驗室環境是很好的範例。
HTTP 符號伺服器不能是符號路徑鏈結中的下游存放區,因為其只讀性質。 符號伺服器 Proxy (ISAPI 篩選器) 適用於此限制。 SymProxy 會使用預先設定的上游符號存放區,將遺漏的檔案下載到伺服器的文件系統。 篩選條件會將檔案下載至文件系統,讓 IIS 將檔案下載至用戶端,藉此還原符號存放區鏈結的概念。 如需詳細資訊, 請參閱 SymProxy 。
將 IIS 設定為符號存放區相當容易,因為符號檔只是做為靜態檔案。 唯一非預設設定是 MIME 類型的組態,以允許下載符號檔作為二進位數據流。 這可以使用套用至符號資料夾虛擬目錄的 「*」 通配符來完成。
若要透過因特網存取符號存放區,您必須設定包含符號檔和 網際網路資訊服務 的目錄(IIS)。
注意 由於 IIS 將設定為提供符號檔的方式,因此不建議將相同的伺服器實例用於任何其他用途。 符號伺服器通常對於其他用途而言,所需的安全性設定並不合理,例如外部面向的商務伺服器。 請確定此處所述的範例組態對您的環境有意義,並根據您的特定需求進行調整。
建立符號目錄
首先,選取您將用來作為符號存放區的目錄。 在我們的範例中,我們會呼叫此目錄 c:\symstore,而網路上的伺服器名稱為 \SymMachineName。
如需如何填入符號存放區的詳細資訊,請參閱 SymStore 和 符號存放區資料夾樹狀結構。
設定 IIS
網際網路資訊服務 (IIS) 必須設定為藉由建立虛擬目錄和設定 MIME 類型來提供符號。 完成此動作之後,可能會選擇驗證方法。
建立虛擬目錄
開啟 [網際網路資訊服務 (IIS) 管理員] 。
流覽至 [網站]。
以滑鼠右鍵按兩下 [預設網站 ] 或正在使用的網站名稱,然後選取 [ 新增虛擬目錄...]。
輸入別名的符號,然後按 [下一步]。
為了方便管理,建議將相同的名稱用於資料夾、共用和虛擬目錄。
針對 [路徑 ] 輸入 c:\SymStore ,然後按 [ 下一步]。
按兩下 [ 確定 ] 以完成新增虛擬目錄。
針對伺服器執行子目錄組態程式一次。 請注意,這是全域設定,而且會影響網站根資料夾中未裝載的應用程式。
子目錄組態
流覽至 [計算機]。
開啟組 態編輯器。
流覽至 系統 ApplicationHost/sites。
展開 virtualDirectoryDefaults。
將allowSubDirConfig 設定為 False。
針對伺服器執行此程式一次。 請注意,這是全域設定,而且會影響網站根資料夾中未裝載的應用程式。
選擇性讓符號檔可供流覽
流覽至 [計算機] |網站 |[網站] |符號。
按兩下中央窗格中的 [目錄瀏覽]。
按下右窗格中的 [ 啟用 ]。
下載內容的MIME類型必須設定為application/octet-stream,以允許 IIS 傳遞所有符號檔案。
設定MIME類型
以滑鼠右鍵按兩下 [符號 ] 虛擬目錄,然後選擇 [ 屬性]。
選取 [HTTP 標頭]。
按兩下 [ MIME 類型]。
按一下新增。
針對[ 擴充功能],輸入 *。
針對 MIME類型,輸入 application/octet-stream。
若要結束 [ MIME 類型 ] 對話框,請按兩下 [ 確定]。
若要結束 符號屬性,請按兩下 [ 確定]。
您可以編輯 web.config 檔案來設定符號的 MIME 類型。 此方法會清除繼承的MIME類型,並新增 catch-all 通配符 * MIME 類型。 在某些 IIS 組態中繼承 MIME 類型時,可能需要此方法。
使用 web.config 設定 MIME 類型
編輯 web.config 檔案,如下所示。
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <directoryBrowse enabled="true" /> <staticContent> <clear /> <mimeMap fileExtension=".*" mimeType="application/octet-stream" /> </staticContent> </system.webServer> </configuration>
重新啟動 IIS。
IIS 現在已準備好從符號存放區提供所有類型的符號檔。
設定驗證
您可以將 IIS 設定為使用「整合式 Windows 驗證」,讓用戶端(例如windbg.exe例如)可以自動對 IIS 進行驗證,而不會提示使用者輸入認證。
注意 :只在 IIS 上設定 Windows 驗證,以控制對符號伺服器的存取,這適用於您的環境。 還有其他安全性選項可供進一步控制環境所需的 IIS 存取。
將驗證方法設定為匿名
啟動 網際網路資訊服務 (IIS) 管理員。
流覽至 [計算機] |網站 |[網站] |符號。
按兩下中央窗格中的 [ 驗證 ]。
在 [驗證和訪問控制] 底下,按兩下 [編輯]。
以滑鼠右鍵按兩下 [Windows 驗證 ],然後選取 [ 啟用]。
針對所有其他驗證提供者,以滑鼠右鍵按兩下每個提供者,然後選取 [ 停用]。
按兩下 [ 確定 ] 以完成設定驗證。
如果未列出窗口驗證,請使用 [開啟和關閉 Windows 功能] 來啟用此功能。 功能的位置在每個 Windows 版本中都不同。 在 Windows 8.1/Windows 2012 R2 中,它位於 網際網路資訊服務 |萬維網服務 |安全。
停用 Kerberos 支援
SymSrv.dll連線到 IIS 時不支援 Kerberos 驗證。 因此,必須在 IIS 中停用 Kerberos 驗證,而且 NTLM 必須設定為唯一的 Windows 驗證通訊協定。
注意 只有在這適用於您的環境時,才停用 Kerberos 安全性。
使用 appcmd.exe 停用 Kerberos 支援
開啟命令提示字元視窗
若要停用 Kerberos 並強制使用 NTLM,請使用此命令:
appcmd.exe set config -section:system.webServer/security/authentication/windowsAuthentication /+"providers.[value='NTLM']" /commit:apphost
若要返回已啟用 Kerberos 的預設值,請使用此命令:
appcmd.exe set config -section:system.webServer/security/authentication/windowsAuthentication /+"providers.[value='Negotiate,NTLM']" /commit:apphost
設定 SymSrv 用戶端驗證提示
當 SymSrv 收到驗證要求時,調試程式可以顯示驗證對話框或自動拒絕要求,視其設定方式而定。 您可以使用 !sym prompts on|off 來設定此行為。 例如,若要開啟提示,請使用此命令。
!sym prompts on
若要檢查目前的設定,請使用此命令。
!sym prompts
如需詳細資訊,請參閱 !sym 和 Firewalls and Proxy Servers。