[ASP.NET Core開發實戰]基礎篇04 主機
阿新 • • 發佈:2020-07-17
主機定義
主機是封閉應用資源的物件。
設定主機
主機通常由 Program 類中的程式碼配置、生成和執行。
HTTP專案(ASP.NET Core專案)建立泛型主機:
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }
非 HTTP 專案建立泛型主機:
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); }); }
HTTP專案與非HTTP專案的區別:
- Main 方法相同
- HTTP專案的CreateHostBuilder 呼叫 ConfigureWebHostDefaults
- 非HTTP專案的CreateHostBuilder 呼叫 CreateDefaultBuilder
適用於所有應用型別的設定
屬性名 | 鍵 | 型別 | 預設 | 環境變數 | 備註 |
---|---|---|---|---|---|
ApplicationName | applicationName | string | 包含應用入口點的程式集的名稱。 | <PREFIX_>APPLICATIONNAME | 要設定此值,請使用環境變數。 |
ContentRoot | contentRoot | string | 應用程式集所在的資料夾。 | <PREFIX_>CONTENTROOT | 若要設定此值,請使用環境變數或對 IHostBuilder 呼叫 UseContentRoot |
EnvironmentName | environment | string | Production | <PREFIX_>ENVIRONMENT | 若要設定此值,請使用環境變數或對 IHostBuilder 呼叫 UseEnvironment |
ShutdownTimeout | shutdownTimeoutSeconds | int | 5 秒 | <PREFIX_>SHUTDOWNTIMEOUTSECONDS | 若要設定此值,請使用環境變數或配置 HostOptions。 |
適用於 Web 應用的設定
一些主機設定僅適用於 HTTP 專案。 預設情況下,用來配置這些設定的環境變數可以具有 DOTNET_ 或 ASPNETCORE_ 字首。
屬性名 | 鍵 | 型別 | 預設 | 環境變數 | 備註 |
---|---|---|---|---|---|
CaptureStartupErrors | captureStartupErrors | bool(true 或 1) | 預設為 false,除非應用使用 Kestrel 在 IIS 後方執行,其中預設值是 true。 | <PREFIX_>CAPTURESTARTUPERRORS | 若要設定此值,使用配置或呼叫 CaptureStartupErrors |
DetailedErrors | detailedErrors | bool(true 或 1) | false | <PREFIX_>_DETAILEDERRORS | 要設定此值,使用配置或呼叫 UseSetting |
HostingStartupAssemblies | hostingStartupAssemblies | string | 空字串 | <PREFIX_>_HOSTINGSTARTUPASSEMBLIES | 要設定此值,使用配置或呼叫 UseSetting |
HostingStartupExcludeAssemblies | hostingStartupExcludeAssemblies | string | 空字串 | <PREFIX_>_HOSTINGSTARTUPEXCLUDEASSEMBLIES | 要設定此值,使用配置或呼叫 UseSetting |
HTTPS_Port | https_port | string | 未設定預設值。 | <PREFIX_>HTTPS_PORT | 要設定此值,使用配置或呼叫 UseSetting |
PreferHostingUrls | preferHostingUrls | bool(true 或 1) | true | <PREFIX_>_PREFERHOSTINGURLS | 若要設定此值,請使用環境變數或呼叫 PreferHostingUrls |
PreventHostingStartup | preventHostingStartup | bool(true 或 1) | false | <PREFIX_>_PREVENTHOSTINGSTARTUP | 若要設定此值,請使用環境變數或呼叫 UseSetting |
StartupAssembly | startupAssembly | string | 應用的程式集 | <PREFIX_>STARTUPASSEMBLY | 若要設定此值,請使用環境變數或呼叫 UseStartup |
URL | urls | string | http://localhost:5000 和 https://localhost:5001 | <PREFIX_>URLS | 若要設定此值,請使用環境變數或呼叫 UseUrls |
WebRoot | webroot | string | 預設值為 wwwroot。 {content root}/wwwroot 的路徑必須存在。 | <PREFIX_>WEBROOT | 若要設定此值,請使用環境變數或對 IWebHostBuilder 呼叫 UseWebRoot |