.NET6 debug on local IIS

.NET6, NET Core, 在 local IIS 偵錯

參考文章

Debugging ASP.NET Core Applications within IIS
[ASP.NET Core] 開發時,運行在 IIS 上的方式

開發環境

OS: Windows 11 IDE: Visual Studio Community 2022 目標平台: .NET6 系統骨幹: Blazor Server App

取得工具與功能

確認有安裝【ASP.NET 與網頁程式開發\開發時間的 IIS 支援】。

開發時間的 IIS 支援

IIS 設定紀錄

前置條件:已開發好初步階段,打算進行SIT。

IIS 設定中站台【繫結】的設定與一般 WebApp 網站設定是一樣的。

在【基本設定】中的『實體路徑』欄位是指向專案目錄而不是bin目錄。

開發專案屬性設定

打開 WebApp 專案【屬性\偵錯】可以看到「開啟 debug 啟動設定檔 UI」。

加入 IIS 的啟動設定,指定:

  • 環境變數:ASPNETCORE_ENVIRONMENT=Development

  • 啟動瀏覽器:ture

  • 應用程式 URL: https://localhost:443, 因為打算啟用SSL模式所以port是443,不打算用SSL那port就是80。

這個UI的設定會填入到 launchSettings.json 啟動設定檔,直接編輯也可以。

成果

將會自動在專案目錄產生 web.config 組態檔,這是IIS啟動網站的依據。這個 web.config 將告訴 IIS 這是 .NET Core WebApp 網站與如何啟動它。

web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="bin\Debug\net6.0\YourApp.exe" arguments="" stdoutLogEnabled="false" hostingModel="InProcess">
        <environmentVariables>
          <environmentVariable name="ASPNETCORE_HTTPS_PORT" value="443" />
          <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
        </environmentVariables>
      </aspNetCore>
    </system.webServer>
  </location>
</configuration>

啟動設定檔(launchSettings.json)會增加 IIS 啟動的設定。命名可以不用 IIS 字樣只是方便辦認。

{
  "profiles": {
    "YourApp": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "dotnetRunMessages": "true"
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "IIS": { /*------ IIS 相關設定 ------ */
      "commandName": "IIS",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  },
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iis": { /*------ IIS 相關設定 ------ */
      "applicationUrl": "https://localhost:443",
      "sslPort": 0
    },
    "iisExpress": {
      "applicationUrl": "http://localhost:60317/",
      "sslPort": 44317
    }
  }
}

Last updated