在 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 偵錯的先決條件。
在 Visual Studio [方案總管] 中選取 ASP.NET Core 專案,然後選取 [屬性] 圖示,或按 Alt+Enter,或以滑鼠右鍵按一下並選擇 [屬性]。
選取 [偵錯] 索引標籤,然後按一下連結以開啟 [開啟 debug 啟動設定檔 UI]。
呈現的 UI 會對應至專案
launchSettings.json
檔案中的設定。 如需此檔案的詳細資訊,請參閱在 ASP.NET Core 中使用多個環境中的「開發與launchSettings.json
」一節。選取要設定用於偵錯的設定檔。
- 如果是 Kestrel,請選取 https 設定檔或以專案命名的設定檔。
- 若為 IIS Express,請從下拉式清單中選取 [IIS Express]。
- 若為本機 IIS,請選取 [新增] 並建立新的 IIS 設定檔。
請確定已選取 [啟動瀏覽器]。
請確定 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:5001
和http://localhost:5000
。 針對 IIS Express,應用程式 SSL URL 通常是http://localhost:44334
。在 [環境變數] 下,確定 ASPNETCORE_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 的值為 [開發]。 如果不是,請選取 [新增] 並加以新增。
使用 [檔案]>[儲存選取的專案] 或 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 伺服器上的架構。compilation
檔案的web.config
元素應該如下列範例所示:注意
此範例是部分的
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"
並指定 [發行] 組建。
相關內容
- ASP.NET 偵錯:系統需求
- 如何:在使用者帳戶下執行背景工作處理序
- 如何:尋找 ASP.NET 處理序的名稱
- Debug deployed web applications (對已部署的 Web 應用程式進行偵錯)
- 如何:對 ASP.NET 例外狀況進行偵錯
- Debug web applications: Errors and troubleshooting (對 Web 應用程式進行偵錯:錯誤和疑難排解)