在 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 偵錯 必要條件。
選取 Visual Studio [方案總管] 中的 ASP.NET Core 專案,然後按兩下 [屬性] 圖示,或按 Alt+Enter,或以滑鼠右鍵按兩下並選擇 [屬性]。
選取 [偵錯] 索引標籤,然後按下連結以開啟 開啟偵錯啟動設定檔 UI。
呈現的 UI 會對應至專案
launchSettings.json
檔案中的設定。 如需有關此檔案的更多資訊,請參閱 在 ASP.NET Core中使用多個環境的開發和launchSettings.json
部分。選取要用於偵錯的設定檔。
- 針對 Kestrel,選取 https 配置檔或以專案命名的設定檔。
- 針對 [IIS Express],從下拉式清單中選取 [IIS Express]。
- 針對本機 IIS,選取 新增,然後建立新的 IIS 設定檔。
請確定已選取 [啟動瀏覽器]。
請確定 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:5000
和https://localhost:5001
。 - 針對 IIS Express,應用程式 SSL 網址 通常是
https://localhost:44334
。
- 針對 https 配置,應用程式 URL 屬性通常
在 [環境變數下,確定 ASPNETCORE_ENVIRONMENT 具有 Development的值。 如果沒有,請新增變數。
如需環境變數的詳細資訊,請參閱 Environment。
若要對應用程式進行偵錯,請在項目中設定某些程式代碼的斷點。 在 Visual Studio 工具列中,確定組態已設定為 [偵錯]。
若要開始偵錯,請選取工具列中的設定檔名稱,例如 https、IIS Express,或 <工具列中的 IIS 配置檔名稱>、從 [ 偵錯] 功能選取 [開始偵錯],或按 F5。 調試程式會在斷點暫停。 如果偵錯工具無法觸及斷點,請參閱 偵錯問題排除指南。
偵錯 ASP.NET Core 應用程式
IIS Express 是預設值,且已預先設定。 如果您要在本機 IIS 上進行偵錯,請確定您符合 本機 IIS 偵錯的需求。
選取 Visual Studio [方案總管] 中的 ASP.NET Core 專案,然後按兩下 [屬性] 圖示,或按 Alt+Enter,或以滑鼠右鍵按兩下並選擇 [屬性]。
選取 [偵錯] 索引標籤。
在 [屬性] 窗格中,配置檔旁,
- 針對 [IIS Express],從下拉式清單中選取 [IIS Express]。
- 針對本機 IIS,從下拉式清單中選取應用程式名稱,或選取 [新增]、建立新的設定檔名稱,然後選取 [確定] [確定]。
在 啟動旁,從下拉式清單中選擇 IIS Express 或 IIS。
請確定已選取 [啟動瀏覽器]。
在 [環境變數] 下,確保存在 ASPNETCORE_ENVIRONMENT 並且其值為 Development。 如果沒有,請選取[新增]並加入。
使用 [檔案]>[儲存選取的專案] 或 Ctrl+S 儲存任何變更。
若要對應用程式進行偵錯,請在項目中設定某些程式代碼的斷點。 在 Visual Studio 工具列中,確定組態設定為 [偵錯],並在模擬器字段中顯示 IIS Express或新的 IIS 配置檔名稱。
若要開始偵錯,請在工具列中選取 [IIS Express 或 <IIS 配置檔> 名稱]、從 [ 偵錯] 功能選取 [開始偵錯],或按 F5。 調試程式會在斷點暫停。 如果除錯器無法命中斷點,請參閱 疑難排解除錯。
偵錯 ASP.NET 應用程式
IIS Express 是預設值,且已預先設定。 如果您要在本機 IIS 上進行偵錯,請確定您符合 本機 IIS 偵錯需求。
選取 Visual Studio [方案總管] 中的 ASP.NET 項目,然後按兩下 [屬性] 圖示,或按 Alt+Enter,或以滑鼠右鍵按下並選擇 [[屬性]。
選取 [Web] 索引標籤。
如果您沒有看到 [Web] 索引標籤,請參閱 偵錯 ASP.NET Core 應用程式。 「Web」標籤頁僅顯示於 ASP.NET Framework。
在 [屬性] 窗格中,在 [伺服器] 下方。
- 針對 Kestrel,從下拉式清單中選取「https」。
- 針對 [IIS Express],從下拉式清單中選取 [IIS Express]。
- 針對本機 IIS,
- 從下拉式清單中選取 [本機 IIS]。
- 在 [專案 URL] 字段中,如果您尚未在 IIS 中設定應用程式,請選取 [建立虛擬目錄]。
在 [調試程式下,選取 [ASP.NET]。
選擇 [檔案]>[儲存選取的專案] (或按 ctrl+S] 以儲存任何變更。
若要對應用程式進行偵錯,請在項目中設定某些程式代碼的斷點。 在 Visual Studio 工具列中,確保組態設定為 [偵錯],並在模擬器字段中,您想要的瀏覽器會顯示於 [IIS Express (<瀏覽器名稱>)] 或 [本機 IIS (<瀏覽器名稱>)]。
若要開始偵錯,請選取工具欄中的 [IIS Express (<瀏覽器名稱>)] 或 [本機 IIS (<瀏覽器名稱>)],從 [偵錯] 功能表選取 [開始偵錯],或按 F5。 調試程式會在斷點暫停。 如果除錯器無法命中斷點,請參閱 偵錯疑難解答。
針對偵錯進行疑難解答
如果本機 IIS 偵錯無法命中斷點,請遵循下列步驟進行疑難解答。
從 IIS 啟動 Web 應用程式,並確定它已正確執行。 讓 Web 應用程式保持執行狀態。
從 Visual Studio 中,選取 [偵錯 > 附加至進程],或 按 Ctrl+Alt+P,然後連線到 ASP.NET 或 ASP.NET Core 進程(通常是 w3wp.exe 或 dotnet.exe)。 如需詳細資訊,請參閱 附加到行程 和 如何查找 ASP.NET 行程名稱。
如果可以使用 附加到流程來連線並觸發斷點,但不能使用 調試>開始調試 或 F5,則專案屬性中的設定可能不正確。 如果您使用 HOSTS 檔案,請確定它也已正確設定。
在 web.config 檔案中設定偵錯
根據預設,ASP.NET 專案有 web.config
檔案,其中包含應用程式組態和啟動資訊,包括偵錯設定。 必須正確設定 web.config
檔案以進行偵錯。 上一節中的 屬性 設定會更新 web.config
檔案,但您也可以手動設定這些檔案。
注意
ASP.NET Core 專案一開始沒有 web.config
檔案,但使用 appsettings.json
和 launchSettings.json
檔案來設定和啟動資訊。 部署應用程式會在專案中建立 web.config
檔案或檔案,但通常不包含偵錯資訊。
提示
您的部署程式可能會更新 web.config
設定,因此在嘗試偵錯之前,請確定 web.config
已設定偵錯。
若要手動設定 web.config
檔案以進行偵錯:
在 Visual Studio 中,開啟 ASP.NET 項目的
web.config
檔案。Web.config
是 XML 檔案,因此包含標記標示的巢狀區段。 找出 [configuration/system.web/compilation
] 區段。 (如果compilation
元素不存在,請加以建立。)請確定
compilation
元素中的debug
屬性設定為true
。 (如果compilation
元素不包含debug
屬性,請新增它,並將它設定為true
。)如果您使用本機 IIS 而非預設 IIS Express 伺服器,請確定
compilation
元素中的targetFramework
屬性值符合 IIS 伺服器上的架構。web.config
檔案的compilation
項目看起來應該像下列範例:注意
此範例是
web.config
檔案的一部分。configuration
和system.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"
並指定正式版本組建。