共用方式為


HTTP 符號存放區

藉由使用透過 symsrv.dll 支援的 SRV 通訊協定(隨附於調試程式),可以使用 HTTP 存取符號存放區(而不只是 UNC/SMB)。

當防火牆不允許用戶端與伺服器之間的SMB時,通常會使用 HTTP,而不是SMB。 生產環境與實驗室環境是很好的範例。

HTTP 符號伺服器不能是符號路徑鏈結中的下游存放區,因為其只讀性質。 符號伺服器代理 (ISAPI 篩選器)繞過此限制。 SymProxy 會使用預先設定的上游符號存放區,將遺漏的檔案下載到伺服器的文件系統。 篩選條件會將檔案下載至文件系統,讓 IIS 將檔案下載至用戶端,藉此還原符號存放區鏈結的概念。 如需詳細資訊,請參閱 SymProxy

將 IIS 設定為符號存放區相當容易,因為符號檔只是做為靜態檔案。 唯一非預設設定是 MIME 類型的組態,以允許下載符號檔作為二進位數據流。 這可以透過將通配符「*」套用至符號資料夾的虛擬目錄來完成。

若要透過因特網存取符號存放區,您必須設定包含符號檔和 Internet Information Services (IIS) 的目錄。

注意 因為 IIS 將設定為提供符號檔的方式,因此不建議將相同的伺服器實例用於任何其他用途。 符號伺服器通常對於其他用途而言,所需的安全性設定並不合理,例如外部面向的商務伺服器。 請確定此處所述的範例組態對您的環境有意義,並根據您的特定需求進行調整。

建立符號目錄

首先,選取您將用來作為符號存放區的目錄。 在我們的範例中,我們會呼叫此目錄 c:\symstore,而網路上的伺服器名稱為 \SymMachineName。

如需如何填入符號存放區的詳細資訊,請參閱 SymStore符號存放區資料夾樹狀目錄

設定 IIS

Internet Information Services (IIS) 必須設定為藉由建立虛擬目錄和設定 MIME 類型來提供符號。 完成此動作之後,可能會選擇驗證方法。

建立虛擬目錄

  1. 開啟 Internet Information Services (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. 若為 Extension,請輸入 *

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

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

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

您可以編輯 web.config 檔案來設定符號的MIME類型。 此方法會清除繼承的 MIME 類型,並新增全匹配通配符 * 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. 啟動 Internet Information Services(IIS)管理器

  2. 導航至 [計算機] | 站點 | [網站] | 符號

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

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

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

  6. 針對所有其他驗證提供者,右鍵點擊每個提供者,然後選取 停用

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

如果未列出 Windows 認證,請使用 開啟或關閉 Windows 功能 來啟用此功能。 功能的位置在每個 Windows 版本中都不同。 在 Windows 8.1/Windows 2012 R2 中,它位於 Internet Information Services 下 |萬維網服務 |安全。

停用 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

如需詳細資訊,請參閱 !sym防火牆和 Proxy 伺服器