共用方式為


在 Visual Studio 中偵錯 ASP.NET 或 ASP.NET Core 應用程式

您可以在 Visual Studio 中偵錯 ASP.NET 和 ASP.NET Core 應用程式。 在 ASP.NET 和 ASP.NET Core 之間,其流程有所不同,且取決於您是使用 IIS Express 還是本機 IIS 伺服器來執行。

注意

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

內建的 Kestrel 和 IIS Express 伺服器隨附於 Visual Studio 中。 Kestrel 是 ASP.NET Core 專案的預設偵錯伺服器,且已預先設定。 IIS Express 是 ASP.NET 的預設偵錯伺服器。

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

針對 ASP.NET Core,您也可以在 Kestrel 網頁伺服器上進行偵錯。

本機 IIS 伺服器的必要條件

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

  • 如果尚未安裝,請安裝 ASP.NET 和 Web 開發功能。 (重新執行 Visual Studio 安裝程式,選取 [修改],然後新增此工作負載。

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

  • 使用 ASP.NET 和/或 ASP.NET Core 的適當版本安裝並正確設定 IIS。 如需有關在 Windows 上使用 IIS 主機 ASP.NET Core 的更多資訊,請參閱在 Windows 上使用 IIS 主機 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. 選取 [偵錯] 索引標籤,然後按下連結以開啟 開啟偵錯啟動設定檔 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 Core 或 .NET 5+ 主機 URL 的位置。 對於命名與專案相同的配置檔(也就是,launchSettings.json 中的 commandName 屬性為 Project),Kestrel 伺服器會接聽指定的端口。 針對 IIS 配置檔,這通常與 應用程式 URL相同。 如需詳細資訊,請參閱 設定專案下的 IIS 啟動設定檔一節。

    應用程式 URL應用程式 SSL URL 指定應用程式 URL。

    • 針對 https 配置,應用程式 URL 屬性通常 https://localhost:7241;http://localhost:5175
    • 對於以專案命名的設定檔,這些屬性通常是 http://localhost:5000https://localhost:5001
    • 針對 IIS Express,應用程式 SSL 網址 通常是 https://localhost:44334
  6. 在 [環境變數下,確定 ASPNETCORE_ENVIRONMENT 具有 Development的值。 如果沒有,請新增變數。

    ASP.NET 核心調試程式設定

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

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

  8. 若要開始偵錯,請選取工具列中的設定檔名稱,例如 httpsIIS 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 ExpressIIS

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

  6. 在 [環境變數] 下,確保存在 ASPNETCORE_ENVIRONMENT 並且其值為 Development。 如果沒有,請選取[新增]並加入。

    ASP.NET 核心調試程式設定

  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 伺服器上的架構。

    web.config 檔案的 compilation 項目看起來應該像下列範例:

    注意

    此範例是 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" 並指定正式版本組建。