HTTP 符號存放區

透過偵錯工具) 隨附 symsrv.dll (支援的 SRV 通訊協定,可以使用 HTTP (來存取符號存放區,而不只是 UNC/SMB) 。

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

HTTP 符號伺服器不能是符號路徑鏈結中的下游存放區,因為其唯讀本質。 符號伺服器 Proxy (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. 針對 [延伸模組],輸入 *

  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) Manager

  2. 流覽至 [電腦] |網站 |[網站] |符號

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

  4. [驗證和存取控制] 下,按一下 [編輯]。

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

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

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

如果未列出視窗驗證,請使用 [開啟和關閉 Windows 功能 ] 來啟用此功能。 功能的位置在每個版本的 Windows 中都不同。 在 Windows 8.1/Windows 2012 R2 中,位於 Internet Information Services 下 |World Wide Web 服務 |安全。

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