1. 程式人生 > 實用技巧 >[ASP.NET Core開發實戰]基礎篇04 主機

[ASP.NET Core開發實戰]基礎篇04 主機

主機定義

主機是封閉應用資源的物件。

設定主機

主機通常由 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:5000https://localhost:5001 <PREFIX_>URLS 若要設定此值,請使用環境變數或呼叫 UseUrls
WebRoot webroot string 預設值為 wwwroot。 {content root}/wwwroot 的路徑必須存在。 <PREFIX_>WEBROOT 若要設定此值,請使用環境變數或對 IWebHostBuilder 呼叫 UseWebRoot