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 類型來提供符號。 完成此動作之後,可能會選擇驗證方法。

建立虛擬目錄

  1. 開啟 [網際網路資訊服務 (IIS) 管理員]

  2. 流覽至 [網站]。

  3. 以滑鼠右鍵按兩下 [預設網站 ] 或正在使用的網站名稱,然後選取 [ 新增虛擬目錄...]。

  4. 輸入別名符號,然後按 [下一步]。

    為了方便管理,建議將相同的名稱用於資料夾、共用和虛擬目錄。

  5. 針對 [路徑 ] 輸入 c:\SymStore ,然後按 [ 下一步]。

  6. 按兩下 [ 確定 ] 以完成新增虛擬目錄。

針對伺服器執行子目錄組態程式一次。 請注意,這是全域設定,而且會影響網站根資料夾中未裝載的應用程式。

子目錄組態

  1. 流覽至 [計算機]

  2. 開啟組 態編輯器

  3. 流覽至 系統 ApplicationHost/sites

  4. 展開 virtualDirectoryDefaults

  5. 將allowSubDirConfig 設定False

針對伺服器執行此程式一次。 請注意,這是全域設定,而且會影響網站根資料夾中未裝載的應用程式。

選擇性讓符號檔可供流覽

  1. 流覽至 [計算機] |網站 |[網站] |符號。

  2. 按兩下中央窗格中的 [目錄瀏覽]。

  3. 按下右窗格中的 [ 啟用 ]。

下載內容的MIME類型必須設定為application/octet-stream,以允許 IIS 傳遞所有符號檔案。

設定MIME類型

  1. 以滑鼠右鍵按兩下 [符號 ] 虛擬目錄,然後選擇 [ 屬性]。

  2. 選取 [HTTP 標頭]。

  3. 按兩下 [ MIME 類型]。

  4. 按一下新增

  5. 針對[ 擴充功能],輸入 *

  6. 針對 MIME類型,輸入 application/octet-stream

  7. 若要結束 [ MIME 類型 ] 對話框,請按兩下 [ 確定]。

  8. 若要結束 符號屬性,請按兩下 [ 確定]。

您可以編輯 web.config 檔案來設定符號的 MIME 類型。 此方法會清除繼承的MIME類型,並新增 catch-all 通配符 * MIME 類型。 在某些 IIS 組態中繼承 MIME 類型時,可能需要此方法。

使用 web.config 設定 MIME 類型

  1. 編輯 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>
    
  2. 重新啟動 IIS。

IIS 現在已準備好從符號存放區提供所有類型的符號檔。

設定驗證

您可以將 IIS 設定為使用「整合式 Windows 驗證」,讓用戶端(例如windbg.exe例如)可以自動對 IIS 進行驗證,而不會提示使用者輸入認證。

注意 :只在 IIS 上設定 Windows 驗證,以控制對符號伺服器的存取,這適用於您的環境。 還有其他安全性選項可供進一步控制環境所需的 IIS 存取。

將驗證方法設定為匿名

  1. 啟動 網際網路資訊服務 (IIS) 管理員

  2. 流覽至 [計算機] |網站 |[網站] |符號。

  3. 按兩下中央窗格中的 [ 驗證 ]。

  4. 在 [驗證和訪問控制] 底下,按兩下 [編輯]。

  5. 以滑鼠右鍵按兩下 [Windows 驗證 ],然後選取 [ 啟用]。

  6. 針對所有其他驗證提供者,以滑鼠右鍵按兩下每個提供者,然後選取 [ 停用]。

  7. 按兩下 [ 確定 ] 以完成設定驗證。

如果未列出窗口驗證,請使用 [開啟和關閉 Windows 功能] 來啟用此功能。 功能的位置在每個 Windows 版本中都不同。 在 Windows 8.1/Windows 2012 R2 中,它位於 網際網路資訊服務 |萬維網服務 |安全。

停用 Kerberos 支援

SymSrv.dll連線到 IIS 時不支援 Kerberos 驗證。 因此,必須在 IIS 中停用 Kerberos 驗證,而且 NTLM 必須設定為唯一的 Windows 驗證通訊協定。

注意 只有在這適用於您的環境時,才停用 Kerberos 安全性。

使用 appcmd.exe 停用 Kerberos 支援

  1. 開啟命令提示字元視窗

  2. 若要停用 Kerberos 並強制使用 NTLM,請使用此命令:

    appcmd.exe set config -section:system.webServer/security/authentication/windowsAuthentication /+"providers.[value='NTLM']" /commit:apphost
    
  3. 若要返回已啟用 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

如需詳細資訊,請參閱 !symFirewalls and Proxy Servers