無需在 IIS 上發布的 ASP.NET Core 應用程序調試
我曾經使用 asp.net mvc4 並且在 IIS 中我的網站的物理路徑將指向我的解決方案目錄,每次我更新我的程式碼時,我只是重新建構我的解決方案,然後我可以使用“附加到程序”(w3wp)來開始調試。
在 asp.net 核心中,當我將我的網站發佈到文件系統時,我可以使用帶有非託管程式碼的 IIS 執行我的網站。但是當我將我的 IIS 網站指向我的網站解決方案程式碼時,它顯示 502 錯誤。
您不需要像我們以前描述的那樣在 IIS 中執行 .Net Core 來輕鬆調試等。
使用 .Net Core,您只需在項目根目錄中打開命令行並輸入“dotnet run”
DotNet Run 使用環境變數來驅動它的工作。因此,如果您希望您的網站在特定 URL 或埠上執行,請鍵入:
SET ASPNETCORE_URLS=http://example.com或者,如果您只是希望它在不同的埠上執行
SET ASPNETCORE_URLS=http://localhost:8080然後設置環境
SET ASPNETCORE_ENVIRONMENT=Development設置好所有環境變數後,鍵入
dotnet run現在要對其進行調試,請附加到 cmd.exe,並在其標題中使用 dotnet run。您將能夠以這種方式調試您的程式碼。
現在,如果您使用的是 Visual Studio,在您的項目的“屬性”下有一個名為“launchSettings.JSON”的文件。您可以在此處配置配置文件,我將我的預設配置文件設置為 Kestrel Development,然後是 Kestrel Production,最後使用 IIS,這樣我就不會在 IIS Express 中執行 F5。
我的 LaunchSettings.json 看起來像這樣:
{ "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:56545/", "sslPort": 0 } }, "profiles": { "Kestrel Development": { "executablePath": "dotnet run", "commandName": "Project", "commandLineArgs": "dotnet run", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", "ASPNETCORE_URLS": "http://localhost:8080" } }, "Kestrel Production": { "commandLineArgs": "dotnet run", "commandName": "Project", "environmentVariables": { "ASPNETCORE_URLS": "http://localhost:8080", "ASPNETCORE_ENVIRONMENT": "Production" }, "executablePath": "dotnet" }, "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } }第一個配置文件是您按下 F5 時使用的配置文件。因此,當我按 F5 時,Visual Studio 會為我啟動 dotnet run,並設置我的配置文件的 environmentVariables 部分在 launchSettings.JSON 中指定的環境和 URL。
現在因為我有多個配置文件,所以我在執行按鈕旁邊有一個下拉菜單,因此如果我想在本地以生產模式執行,我可以選擇 Kestrel Production。
請按照以下步驟來實現您想要的。
- 在 launchSettings.json 中,添加一個名為
iisunder的屬性iisSettings,如下所示:"iis": { "applicationUrl": "http://my.aspnetcoreapp.com" }
- 在該
profiles部分下,添加一個commandName設置為的新配置文件IIS。我打電話給我Local IIS的。這將在名為 的執行下拉列表中添加一個新選項Local IIS。"Local IIS": { "commandName": "IIS", "launchBrowser": true, "launchUrl": "http://my.aspnetcoreapp.com", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }
- 在 IIS 中創建網站。將主機名設置為
my.aspnetcoreapp.com. 還為此網站創建/使用一個應用程序池,其 .NET CLR 版本設置為“無託管程式碼”。- 將該網站的物理路徑設置為您的 asp.net 核心項目的位置,而不是解決方案,當然,除非您的項目與解決方案位於同一文件夾中。
- 在主機文件中添加一個環回條目(對於 Windows C:\Windows\System32\drivers\etc\hosts)
127.0.0.1 my.aspnetcoreapp.com
- 返回 Visual Studio,然後執行應用程序。確保從“執行”下拉菜單中選擇了“本地 IIS”配置文件。這將在瀏覽器中的 URL 處啟動應用程序,然後顯示一條簡短的載入消息*“Provisioning IIS…”*。
- 完畢!從現在開始,您可以在該 URL 啟動您的應用程序,也可以通過附加到程序w3wp進行調試。
*您還可以在“預設網站”*下託管您的應用程序,方法是指定 ULR,
localhost/MyAspNetCoreApp而不是my.aspnetcoreapp.com. 如果這樣做,將創建一個名為 的新應用程序池MyAspNetCoreApp AppPool。
