Asp.net

無需在 IIS 上發布的 ASP.NET Core 應用程序調試

  • May 26, 2020

我曾經使用 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。

在此處輸入圖像描述

請按照以下步驟來實現您想要的。

  1. 在 launchSettings.json 中,添加一個名為iisunder的屬性iisSettings,如下所示:
"iis": {
 "applicationUrl": "http://my.aspnetcoreapp.com"
}
  1. 在該profiles部分下,添加一個commandName設置為的新配置文件IIS。我打電話給我Local IIS的。這將在名為 的執行下拉列表中添加一個新選項Local IIS
"Local IIS": {
 "commandName": "IIS",
 "launchBrowser": true,
 "launchUrl": "http://my.aspnetcoreapp.com",
 "environmentVariables": {
   "ASPNETCORE_ENVIRONMENT": "Development"
 }
}
  1. 在 IIS 中創建網站。將主機名設置為my.aspnetcoreapp.com. 還為此網站創建/使用一個應用程序池,其 .NET CLR 版本設置為“無託管程式碼”。
  2. 將該網站的物理路徑設置為您的 asp.net 核心項目的位置,而不是解決方案,當然,除非您的項目與解決方案位於同一文件夾中。
  3. 在主機文件中添加一個環回條目(對於 Windows C:\Windows\System32\drivers\etc\hosts

127.0.0.1 my.aspnetcoreapp.com

  1. 返回 Visual Studio,然後執行應用程序。確保從“執行”下拉菜單中選擇了“本地 IIS”配置文件。這將在瀏覽器中的 URL 處啟動應用程序,然後顯示一條簡短的載入消息*“Provisioning IIS…”*。
  2. 完畢!從現在開始,您可以在該 URL 啟動您的應用程序,也可以通過附加到程序w3wp進行調試。

*您還可以在“預設網站”*下託管您的應用程序,方法是指定 ULR,localhost/MyAspNetCoreApp而不是my.aspnetcoreapp.com. 如果這樣做,將創建一個名為 的新應用程序池MyAspNetCoreApp AppPool

我關於這個的中篇文章

引用自:https://stackoverflow.com/questions/38910063