在 Visual Studio 中對 ASP.NET 或 ASP.NET Core 進行偵錯

您可以在 Visual Studio 中偵錯 ASP.NET 和 ASP.NET Core 應用程式。 無論您是在 IIS Express 還是本機 IIS 伺服器上執行,此程序在 ASP.NET 和 ASP.NET Core 之間會有所不同。

注意

下列步驟和設定僅適用於在本機伺服器上偵錯應用程式。 在遠端 IIS 伺服器上對應用程式進行偵錯時,會使用 [連結至處理序],並忽略這些設定。 如需 IIS 上遠端偵錯 ASP.NET 應用程式的詳細資訊和指示,請參閱在 IIS 電腦上對 ASP.NET 進行遠端偵錯在遠端 IIS 電腦上對 ASP.NET Core 進行遠端偵錯

Visual Studio 內建 Kestrel 和 IIS Express 伺服器。 Kestrel 是 ASP.NET Core 專案預先設定的預設偵錯伺服器。 IIS Express 是 ASP.NET 的預設偵錯伺服器。

Visual Studio 中隨附了內建 IIS Express 伺服器。 IIS Express 是 ASP.NET 和 ASP.NET Core 專案的預設偵錯伺服器,而且已預先設定。 這是最簡單的偵錯方式,適合進行初步偵錯和測試。

對於 ASP.NET Core,您還可以在 Kestrel Web 伺服器上進行偵錯。

本機 IIS 伺服器的必要條件

您也可以在設定為執行 ASP.NET 或 ASP.NET Core 應用程式的本機 IIS 伺服器 (8.0 版或更新版本) 上,對這些應用程式偵錯。 若要在本機 IIS 上進行偵錯,您必須符合下列需求:

  • 安裝 ASP.NET 和 Web 開發工作負載 (如未安裝)。 (重新執行 Visual Studio 安裝程式,選取 [修改] 並新增此工作負載)。

  • 以系統管理員身分執行 Visual Studio。

  • 使用適當版本的 ASP.NET 和/或 ASP.NET Core 來安裝並正確設定 IIS。 如需搭配使用 IIS 與 ASP.NET Core 的詳細資訊,請參閱在使用 IIS 的 Windows 上裝載 ASP.NET Core。 如需 ASP.NET,請參閱安裝 IIS 和 ASP.NET 模組

  • 確定該應用程式在 IIS 上正確執行。

對 ASP.NET Core 應用程式進行偵錯

可能存在基於 HTTPs 或專案名稱的預設設定檔,這些設定檔是為 Kestrel 網頁伺服器設定的。 如果要改為在本地 IIS 上偵錯,請確保滿足本機 IIS 偵錯的先決條件

  1. 在 Visual Studio [方案總管] 中選取 ASP.NET Core 專案,然後選取 [屬性] 圖示,或按 Alt+Enter,或以滑鼠右鍵按一下並選擇 [屬性]

  2. 選取 [偵錯] 索引標籤,然後按一下連結以開啟 [開啟 debug 啟動設定檔 UI]

    呈現的 UI 會對應至專案 launchSettings.json 檔案中的設定。 如需此檔案的詳細資訊,請參閱在 ASP.NET Core 中使用多個環境中的「開發與 launchSettings.json」一節。

  3. 選取要設定用於偵錯的設定檔。

    • 如果是 Kestrel,請選取 https 設定檔或以專案命名的設定檔。
    • 若為 IIS Express,請從下拉式清單中選取 [IIS Express]
    • 若為本機 IIS,請選取 [新增] 並建立新的 IIS 設定檔。
  4. 請確定已選取 [啟動瀏覽器]

  5. 請確定 URL應用程式 URL應用程式 SSL URL 均正確。

    [Url] 會指定 .NET 或 .NET Core 的主機 URL 位置。 對於以專案命名的設定檔 (也就是 launchSettings.json 中的 commandName 屬性是 Project),Kestrel 伺服器會接聽指定的通訊埠。 針對 IIS 設定檔,這通常與應用程式 URL 的值相同。 如需詳細資訊,請參閱設定專案下的「IIS 啟動設定檔」一節。

    [應用程式 URL][應用程式 SSL URL] 會指定應用程式 URL。 針對以專案命名的設定檔,此屬性會指定 Kestrel 伺服器 URL,通常是 https://localhost:5001http://localhost:5000。 針對 IIS Express,應用程式 SSL URL 通常是 http://localhost:44334

  6. [環境變數] 下,確定 ASPNETCORE_ENVIRONMENT 的值為 [開發]。 如果不是,請新增該變數。

    ASP.NET Core 偵錯工具設定

    如需環境變數的詳細資訊,請參閱環境

  7. 若要對應用程式進行偵錯,請在某些程式碼上設定中斷點。 在 Visual Studio 工具列中,確定組態已設定為 [偵錯]

  8. 若要開始偵錯,請在工具列中選取設定檔名稱,例如工具列中的 https”、“ IIS Express,或 <IIS 設定檔名稱>,從 偵錯功能表中選取開始偵測,或 按 F5。 偵錯工具會在中斷點暫停。 如果偵錯工具無法叫用中斷點,請參閱針對偵錯進行疑難排解

對 ASP.NET Core 應用程式進行偵錯

已預先將 IIS Express 設定為預設值。 如果您要在本機 IIS 上進行偵錯,請確定您符合本機 IIS 偵錯的需求

  1. 在 Visual Studio [方案總管] 中選取 ASP.NET Core 專案,然後選取 [屬性] 圖示,或按 Alt+Enter,或以滑鼠右鍵按一下並選擇 [屬性]

  2. 選取 [偵錯] 索引標籤。

  3. [屬性] 窗格中的 [設定檔] 旁,

    • 若為 IIS Express,請從下拉式清單中選取 [IIS Express]
    • 若為本機 IIS,請從下拉式清單中選取應用程式名稱,或選取 [新增]、建立新的設定檔名稱,然後選取 [確定]
  4. [啟動] 旁,從下拉式清單中選取 [IIS Express][IIS]

  5. 請確定已選取 [啟動瀏覽器]

  6. [環境變數] 下,確定 ASPNETCORE_ENVIRONMENT 的值為 [開發]。 如果不是,請選取 [新增] 並加以新增。

    ASP.NET Core 偵錯工具設定

  7. 使用 [檔案]>[儲存選取的專案]Ctrl+S 來儲存任何變更。

  8. 若要對應用程式進行偵錯,請在某些程式碼上設定中斷點。 在 Visual Studio 工具列中,確定組態已設定為 [偵錯],且模擬器欄位中出現 IIS Express 或新的 IIS 設定檔名稱。

  9. 若要開始偵錯,請在工具列中選取 IIS Express<IIS 設定檔名稱>,從偵錯功能表選取開始偵錯,或按 F5。 偵錯工具會在中斷點暫停。 如果偵錯工具無法叫用中斷點,請參閱針對偵錯進行疑難排解

對 ASP.NET 應用程式進行偵錯

已預先將 IIS Express 設定為預設值。 如果您要在本機 IIS 上進行偵錯,請確定您符合本機 IIS 偵錯的需求

  1. 在 Visual Studio [方案總管] 中選取 ASP.NET 專案,然後選取 [屬性] 圖示,或按 Alt+Enter,或以滑鼠右鍵按一下並選擇 [屬性]

  2. 選取 [Web] 索引標籤。

    如果沒有看到 [Web] 索引標籤,請參閱偵錯 ASP.NET Core 應用程式。 [Web] 索引標籤只會針對 ASP.NET Framework 顯示。

  3. [屬性] 窗格的 [伺服器] 底下,

    • 如果是 Kestrel,從下拉式清單中選取 https
    • 若為 IIS Express,請從下拉式清單中選取 [IIS Express]
    • 若為本機 IIS,
      1. 請從下拉式清單中選取 [本機 IIS]
      2. [專案 URL] 欄位旁,如果您尚未在 IIS 中設定應用程式,請選取 [建立虛擬目錄]
  4. [偵錯工具] 底下,選取 [ASP.NET]

    顯示 ASP.NET 偵錯工具設定的螢幕擷取畫面。

  5. 選擇 [檔案]>[儲存選取的項目] (或按 Ctrl+S),儲存任何變更。

  6. 若要對應用程式進行偵錯,請在某些程式碼上設定中斷點。 在 Visual Studio 工具列中,確定組態已設定為 [偵錯],而您想要的瀏覽器會出現在模擬器欄位的 [IIS Express (<瀏覽器名稱>)][本機 IIS (<瀏覽器名稱>)] 中。

  7. 若要開始偵錯,請選取工具列中的 IIS Express (<瀏覽器名稱>)本機 IIS (<瀏覽器名稱>),從偵錯功能表中選取開始偵錯,或按 F5。 偵錯工具會在中斷點暫停。 如果偵錯工具無法叫用中斷點,請參閱針對偵錯進行疑難排解

針對偵錯進行疑難排解

如果本機 IIS 偵錯無法進展至中斷點,請遵循下列步驟進行疑難排解。

  1. 從 IIS 啟動 Web 應用程式,並確定它已正確執行。 讓 Web 應用程式保持執行狀態。

  2. 從 Visual Studio 中,選取 [偵錯 > 連結至處理序],或按 Ctrl+Alt+P,然後連線到 ASP.NET 或 ASP.NET Core 處理序 (通常為 w3wp.exedotnet.exe)。 如需詳細資訊,請參閱連結至處理序如何尋找 ASP.NET 處理序的名稱

如果您可以使用 [連結至處理序] 連線並叫用中斷點,但無法使用 [偵錯]>[開始偵錯]F5 執行同樣動作,則專案屬性中的設定可能不正確。 如果您使用 HOSTS 檔案,請確定它也已正確設定。

在 web.config 檔案中設定偵錯

ASP.NET 專案預設具有 web.config 檔案,其中包含應用程式組態和啟動資訊,包括偵錯設定。 必須正確設定 web.config 檔案以進行偵錯。 先前各節中的 [屬性] 設定會更新 web.config 檔案,但您也可以手動設定它們。

注意

ASP.NET Core 專案最初並沒有 web.config 檔案,而是使用 appsettings.jsonlaunchSettings.json 檔案來儲存應用程式組態和啟動資訊。 部署應用程式會在專案中建立一個 web.config 檔案或多個檔案,其中通常不包含偵錯資訊。

提示

您的部署處理序可能會更新 web.config 設定,因此在嘗試偵錯之前,請確定 web.config 已做好偵錯設定。

若要手動設定 web.config 檔案以進行偵錯,請執行以下操作:

  1. 在 Visual Studio 中,開啟 ASP.NET 專案的 web.config 檔案。

  2. Web.config 是一個 XML 檔案,因此會包含透過標記所標示的巢狀區段。 找出 configuration/system.web/compilation 區段。 (如果 compilation 元素不存在,請加以建立)。

  3. 請確定compilation項目中的debug屬性是設定為true。 (如果 compilation 元素不包含 debug 屬性,請加以新增並設定為 true)。

    如果您使用本機 IIS 而非預設 IIS Express 伺服器,請確定compilation項目中的targetFramework屬性值符合 IIS 伺服器上的架構。

    compilation 檔案的 web.config 元素應該如下列範例所示:

    注意

    此範例是部分的 web.config 檔案。 configurationsystem.web 元素中通常會有其他 XML 區段,而 compilation 元素也可能包含其他屬性和元素。

    <configuration>
       ...
       <system.web>
           <compilation  debug="true"  targetFramework="4.6.1" ... >
              ...
           </compilation>
       </system.web>
    </configuration>
    

ASP.NET 會自動偵測任何 web.config 檔案變更,並套用新的組態設定。 您不需要重新啟動電腦或 IIS 伺服器,變更就會生效。

網站可以包含數個虛擬目錄和子目錄,而每個目錄都有 web.config 檔案。 ASP.NET 應用程式會從 URL 路徑中較高層級的 web.config 檔案繼承組態設定。 階層式 web.config 檔案設定會套用到階層中位於其下方的所有 ASP.NET 應用程式。 在階層中較低層級的 web.config 檔案中設定不同的組態,會覆寫較高層級檔案中的設定。

例如,如果您在 www.microsoft.com/aaa/web.config 中指定 debug="true",則 aaa 資料夾或 aaa 任何子資料夾中的任何應用程式都會繼承該設定,除非這些應用程式之一使用自己的 web.config 檔案覆寫該設定。

重要

偵錯模式會大幅降低應用程式的效能。 當您部署實際執行應用程式或進行效能測量時,請在 web.config 中設定 debug="false" 並指定 [發行] 組建。