Události
Mistrovství Světa v Power BI DataViz
14. 2. 16 - 31. 3. 16
Se 4 šance na vstup, můžete vyhrát konferenční balíček a udělat to na LIVE Grand Finale v Las Vegas
Další informaceTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Poznámka
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Upozornění
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Tento článek obsahuje informace o používání obecného hostitele .NET v ASP.NET Core.
Šablony ASP.NET Core vytvářejí WebApplicationBuilder a WebApplicationposkytují zjednodušený způsob konfigurace a spouštění webových aplikací bez Startup
třídy. Další informace o WebApplicationBuilder
migraci z ASP.NET Core 5.0 na verzi 6.0 najdete WebApplication
v tématu Migrace z ASP.NET Core 5.0 na verzi 6.0.
Informace o použití obecného hostitele .NET v konzolových aplikacích naleznete v tématu .NET Generic Host.
Hostitel je objekt, který zapouzdřuje prostředky aplikace, například:
IHostedService
implementaceKdyž se hostitel spustí, volá IHostedService.StartAsync každou implementaci zaregistrované IHostedService v kolekci hostovaných služeb kontejneru služby. Jednou z IHostedService
implementací webové aplikace je webová služba, která spouští implementaci serveru HTTP.
Zahrnutí všech vzájemně závislých prostředků aplikace v jednom objektu umožňuje kontrolu nad spuštěním a řádném vypnutím aplikace.
Hostitel je obvykle nakonfigurovaný, sestavený a spouštěný kódem v souboru Program.cs
. Následující kód vytvoří hostitele s implementací přidanou IHostedService
do kontejneru DI:
await Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddHostedService<SampleHostedService>();
})
.Build()
.RunAsync();
Pro úlohu HTTP volejte ConfigureWebHostDefaults za CreateDefaultBuilder:
await Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.Build()
.RunAsync();
Metoda CreateDefaultBuilder:
DOTNET_
.appsettings.json
.appsettings.{Environment}.json
.Development
.Metoda ConfigureWebHostDefaults:
ASPNETCORE_
.ASPNETCORE_FORWARDEDHEADERS_ENABLED
equals true
.Části Nastavení pro všechny typy aplikací a Nastavení webových aplikací dále v tomto článku ukazují, jak přepsat výchozí nastavení tvůrce.
Následující služby se registrují automaticky:
Další informace o službách poskytovaných architekturou najdete v tématu Injektáž závislostí v ASP.NET Core.
IHostApplicationLifetime Vložte službu (dříveIApplicationLifetime
) do jakékoli třídy pro zpracování úloh po spuštění a řádném vypnutí. Tři vlastnosti rozhraní jsou tokeny zrušení používané k registraci metod spuštění aplikace a zastavení aplikace obslužné rutiny událostí. Rozhraní také obsahuje metodu StopApplication
, která umožňuje aplikacím požadovat řádné vypnutí.
Při provádění řádného vypnutí hostitel:
Následující příklad je IHostedService
implementace, která registruje obslužné rutiny IHostApplicationLifetime
událostí:
public class HostApplicationLifetimeEventsHostedService : IHostedService
{
private readonly IHostApplicationLifetime _hostApplicationLifetime;
public HostApplicationLifetimeEventsHostedService(
IHostApplicationLifetime hostApplicationLifetime)
=> _hostApplicationLifetime = hostApplicationLifetime;
public Task StartAsync(CancellationToken cancellationToken)
{
_hostApplicationLifetime.ApplicationStarted.Register(OnStarted);
_hostApplicationLifetime.ApplicationStopping.Register(OnStopping);
_hostApplicationLifetime.ApplicationStopped.Register(OnStopped);
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
=> Task.CompletedTask;
private void OnStarted()
{
// ...
}
private void OnStopping()
{
// ...
}
private void OnStopped()
{
// ...
}
}
Implementace IHostLifetime řídí, kdy se hostitel spustí a kdy se zastaví. Použije se poslední zaregistrovaná implementace.
Microsoft.Extensions.Hosting.Internal.ConsoleLifetime
je výchozí IHostLifetime
implementace.
ConsoleLifetime
:
IHostEnvironment Vložte službu do třídy, abyste získali informace o následujících nastaveních:
Webové aplikace implementují IWebHostEnvironment
rozhraní, které dědí IHostEnvironment
a přidává WebRootPath.
Konfigurace hostitele se používá pro vlastnosti IHostEnvironment implementace.
Konfigurace hostitele je k dispozici uvnitř HostBuilderContext.ConfigurationConfigureAppConfiguration.
ConfigureAppConfiguration
Po HostBuilderContext.Configuration
nahrazení konfigurace aplikace.
Chcete-li přidat konfiguraci hostitele, zavolejte ConfigureHostConfigurationIHostBuilder
.
ConfigureHostConfiguration
lze volat vícekrát s doplňkovými výsledky. Hostitel používá jakoukoli možnost, která nastaví hodnotu poslední pro daný klíč.
Zprostředkovatel proměnné prostředí s předponou DOTNET_
a argumenty příkazového řádku jsou součástí CreateDefaultBuilder
. U webových aplikací se přidá zprostředkovatel proměnných prostředí s předponou ASPNETCORE_
. Předpona se odebere při čtení proměnných prostředí. Například hodnota proměnné prostředí pro ASPNETCORE_ENVIRONMENT
se stane hodnotou konfigurace hostitele pro environment
klíč.
Následující příklad vytvoří konfiguraci hostitele:
Host.CreateDefaultBuilder(args)
.ConfigureHostConfiguration(hostConfig =>
{
hostConfig.SetBasePath(Directory.GetCurrentDirectory());
hostConfig.AddJsonFile("hostsettings.json", optional: true);
hostConfig.AddEnvironmentVariables(prefix: "PREFIX_");
hostConfig.AddCommandLine(args);
});
Konfigurace aplikace se vytvoří voláním ConfigureAppConfigurationIHostBuilder
.
ConfigureAppConfiguration
lze volat vícekrát s doplňkovými výsledky. Aplikace používá jakoukoli možnost, která nastaví hodnotu poslední pro daný klíč.
Konfigurace vytvořená službou ConfigureAppConfiguration
je k dispozici HostBuilderContext.Configuration pro následné operace a jako služba z DI. Do konfigurace aplikace se přidá také konfigurace hostitele.
Další informace najdete v tématu Konfigurace v ASP.NET Core.
Tato část obsahuje seznam nastavení hostitele, která platí pro úlohy HTTP i jiné úlohy než HTTP. Ve výchozím nastavení můžou mít proměnné prostředí použité ke konfiguraci těchto nastavení předponu DOTNET_
nebo ASPNETCORE_
předponu, která se zobrazí v následujícím seznamu nastavení jako {PREFIX_}
zástupný symbol. Další informace najdete v části Výchozí nastavení tvůrce a Konfigurace: Proměnné prostředí.
Vlastnost je nastavena IHostEnvironment.ApplicationName z konfigurace hostitele během vytváření hostitelů.
Klíč: applicationName
Typ: string
Výchozí hodnota: Název sestavení, které obsahuje vstupní bod aplikace.
Proměnná prostředí: {PREFIX_}APPLICATIONNAME
K nastavení této hodnoty použijte proměnnou prostředí.
Vlastnost IHostEnvironment.ContentRootPath určuje, kde hostitel začne hledat soubory obsahu. Pokud cesta neexistuje, hostitel se nespustí.
Klíč: contentRoot
Typ: string
Výchozí hodnota: Složka, ve které se nachází sestavení aplikace.
Proměnná prostředí: {PREFIX_}CONTENTROOT
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseContentRoot
IHostBuilder
:
Host.CreateDefaultBuilder(args)
.UseContentRoot("/path/to/content/root")
// ...
Další informace naleznete v tématu:
Vlastnost IHostEnvironment.EnvironmentName lze nastavit na libovolnou hodnotu. Hodnoty definované architekturou zahrnují Development
, Staging
a Production
. U hodnot se nerozlišuje malá a velká písmena.
Klíč: environment
Typ: string
Výchozí hodnota: Production
Proměnná prostředí: {PREFIX_}ENVIRONMENT
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseEnvironment
IHostBuilder
:
Host.CreateDefaultBuilder(args)
.UseEnvironment("Development")
// ...
HostOptions.ShutdownTimeout nastaví časový limit pro StopAsync. Výchozí hodnota je 30 sekund. Během časového limitu hostitel:
Pokud vyprší časový limit před zastavením všech hostovaných služeb, všechny zbývající aktivní služby se zastaví, když se aplikace vypne. Služby se zastaví i v případě, že nedokončily zpracování. Pokud služby vyžadují k zastavení více času, zvyšte časový limit.
Klíč: shutdownTimeoutSeconds
Typ: int
Výchozí hodnota: 30 sekund
Proměnná prostředí: {PREFIX_}SHUTDOWNTIMEOUTSECONDS
K nastavení této hodnoty použijte proměnnou prostředí nebo nakonfigurujte HostOptions
. Následující příklad nastaví časový limit na 20 sekund:
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.Configure<HostOptions>(options =>
{
options.ShutdownTimeout = TimeSpan.FromSeconds(20);
});
});
Ve výchozím appsettings.json
se appsettings.{Environment}.json
při změně souboru znovu načte. Pokud chcete toto chování opětovného hostBuilder:reloadConfigOnChange
načítání zakázat v ASP.NET Core 5.0 nebo novějším, nastavte klíč na false
.
Klíč: hostBuilder:reloadConfigOnChange
Typ: bool
(true
nebo false
)
Výchozí hodnota: true
Argument příkazového řádku: hostBuilder:reloadConfigOnChange
Proměnná prostředí: {PREFIX_}hostBuilder:reloadConfigOnChange
Upozornění
Oddělovač dvojtečky (:
) nefunguje s hierarchickými klíči proměnných prostředí na všech platformách. Další informace naleznete v tématu Proměnné prostředí.
Některá nastavení hostitele platí jenom pro úlohy HTTP. Ve výchozím nastavení můžou mít proměnné prostředí použité ke konfiguraci těchto nastavení předponu DOTNET_
nebo ASPNETCORE_
předponu, která se zobrazí v následujícím seznamu nastavení jako {PREFIX_}
zástupný symbol.
Pro tato nastavení jsou k dispozici metody IWebHostBuilder
rozšíření. Ukázky kódu, které ukazují, jak volat metody rozšíření předpokládá webBuilder
je instance IWebHostBuilder
, jako v následujícím příkladu:
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
// ...
});
Pokud false
dojde k chybám při spuštění, dojde k ukončení hostitele. Když true
hostitel zaznamená výjimky při spuštění a pokusí se spustit server.
Klíč: captureStartupErrors
Typ: bool
(true
/1
nebo false
/0
)
Výchozí hodnota: Výchozí hodnota platí, false
pokud aplikace neběží se Kestrel službou IIS, kde výchozí hodnota je true
.
Proměnná prostředí: {PREFIX_}CAPTURESTARTUPERRORS
K nastavení této hodnoty použijte konfiguraci nebo volání CaptureStartupErrors
:
webBuilder.CaptureStartupErrors(true);
Když je prostředí povolené nebo když je Development
prostředí, aplikace zaznamenává podrobné chyby.
Klíč: detailedErrors
Typ: bool
(true
/1
nebo false
/0
)
Výchozí hodnota: false
Proměnná prostředí: {PREFIX_}DETAILEDERRORS
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting(WebHostDefaults.DetailedErrorsKey, "true");
Středník oddělený řetězec hostování spouštěcích sestavení, která se mají načíst při spuštění. I když se hodnota konfigurace ve výchozím nastavení nastaví na prázdný řetězec, hostitelské spouštěcí sestavení vždy obsahují sestavení aplikace. Při hostování spouštěcích sestavení se přidají do sestavení aplikace pro načtení, když aplikace během spouštění sestaví své běžné služby.
Klíč: hostingStartupAssemblies
Typ: string
Výchozí: Prázdný řetězec
Proměnná prostředí: {PREFIX_}HOSTINGSTARTUPASSEMBLIES
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting(
WebHostDefaults.HostingStartupAssembliesKey, "assembly1;assembly2");
Středník oddělený řetězec hostování spouštěcích sestavení, která se mají vyloučit při spuštění.
Klíč: hostingStartupExcludeAssemblies
Typ: string
Výchozí: Prázdný řetězec
Proměnná prostředí: {PREFIX_}HOSTINGSTARTUPEXCLUDEASSEMBLIES
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting(
WebHostDefaults.HostingStartupExcludeAssembliesKey, "assembly1;assembly2");
Nastavte port HTTPS tak, aby se přesměrovává, pokud se zobrazí připojení jiného typu než HTTPS. Používá se při vynucování HTTPS. Toto nastavení nezpůsobí, že server naslouchá na zadaném portu. To znamená, že je možné omylem přesměrovat požadavky na nepoužívaný port.
Klíč: https_port
Typ: string
Výchozí hodnota: Výchozí hodnota není nastavená.
Proměnná prostředí: {PREFIX_}HTTPS_PORT
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting("https_port", "8080");
Porty, na které se mají naslouchat připojení HTTPS.
Klíč: https_ports
Typ: string
Výchozí hodnota: Výchozí hodnota není nastavená.
Proměnná prostředí: {PREFIX_}HTTPS_PORTS
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting("https_ports", "8080");
Určuje, jestli má hostitel naslouchat adresám URL nakonfigurovaným IWebHostBuilder
namísto těchto adres URL nakonfigurovaných s implementací IServer
.
Klíč: preferHostingUrls
Typ: bool
(true
/1
nebo false
/0
)
Výchozí hodnota: false
Proměnná prostředí: {PREFIX_}PREFERHOSTINGURLS
K nastavení této hodnoty použijte proměnnou prostředí nebo volání PreferHostingUrls
:
webBuilder.PreferHostingUrls(true);
Zabraňuje automatickému načítání hostitelských spouštěcích sestavení, včetně hostování spouštěcích sestavení nakonfigurovaných sestavením aplikace. Další informace viz Použití hostujících spouštěcích sestavení v ASP.NET Core.
Klíč: preventHostingStartup
Typ: bool
(true
/1
nebo false
/0
)
Výchozí hodnota: false
Proměnná prostředí: {PREFIX_}PREVENTHOSTINGSTARTUP
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseSetting
:
webBuilder.UseSetting(WebHostDefaults.PreventHostingStartupKey, "true");
Sestavení, které má vyhledat Startup
třídu.
Klíč: startupAssembly
Typ: string
Výchozí: Sestavení aplikace
Proměnná prostředí: {PREFIX_}STARTUPASSEMBLY
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseStartup
.
UseStartup
může převzít název sestavení (string
) nebo typ (TStartup
). Pokud se volá více UseStartup
metod, má přednost poslední metoda.
webBuilder.UseStartup("StartupAssemblyName");
webBuilder.UseStartup<Startup>();
Pokud je tato možnost povolená, potlačí hostování stavových zpráv při spuštění.
Klíč: suppressStatusMessages
Typ: bool
(true
/1
nebo false
/0
)
Výchozí hodnota: false
Proměnná prostředí: {PREFIX_}SUPPRESSSTATUSMESSAGES
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting(WebHostDefaults.SuppressStatusMessagesKey, "true");
Seznam IP adres nebo hostitelských adres oddělených středníkem s porty a protokoly, na kterých má server naslouchat žádostem. Například http://localhost:123
. Pomocí *označte, že server by měl naslouchat žádostem na libovolné IP adrese nebo názvu hostitele pomocí zadaného portu a protokolu (například http://*:5000
). Protokol (http://
nebo https://
) musí být součástí každé adresy URL. Podporované formáty se mezi servery liší.
Klíč: urls
Typ: string
Výchozí hodnota: http://localhost:5000
a https://localhost:5001
Proměnná prostředí: {PREFIX_}URLS
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseUrls
:
webBuilder.UseUrls("http://*:5000;http://localhost:5001;https://hostname:5002");
Kestrel má vlastní rozhraní API konfigurace koncového bodu. Další informace najdete v tématu Kestrel ASP.NET Core.
Vlastnost IWebHostEnvironment.WebRootPath určuje relativní cestu ke statickým prostředkům aplikace. Pokud cesta neexistuje, použije se zprostředkovatel souboru no-op.
Klíč: webroot
Typ: string
Výchozí hodnota: Výchozí hodnota je wwwroot
. Cesta k adresáři {content root}/wwwroot musí existovat.
Proměnná prostředí: {PREFIX_}WEBROOT
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseWebRoot
IWebHostBuilder
:
webBuilder.UseWebRoot("public");
Další informace naleznete v tématu:
Volání metod v vytvořené IHost implementaci pro spuštění a zastavení aplikace Tyto metody ovlivňují všechny IHostedService implementace zaregistrované v kontejneru služby.
Rozdíl mezi Run*
metodami Start*
spočívá v tom, že Run*
metody čekají na dokončení hostitele před vrácením, zatímco Start*
metody se vrátí okamžitě. Metody Run*
se obvykle používají v konzolových aplikacích, zatímco Start*
metody se obvykle používají v dlouhotrvajících službách.
Run spustí aplikaci a zablokuje volající vlákno, dokud se hostitel nevypíná.
RunAsync spustí aplikaci a vrátí Task , která se dokončí při aktivaci tokenu zrušení nebo vypnutí.
RunConsoleAsync umožňuje podporu konzoly, sestavení a spuštění hostitele a čeká na vypnutí Ctrl+C/SIGINT (Windows), Ctrl+C (macOS) nebo SIGTERM.
Start spustí hostitele synchronně.
StartAsync spustí hostitele a vrátí Task , který se dokončí při aktivaci tokenu zrušení nebo vypnutí.
WaitForStartAsync je volána na začátku StartAsync
, který čeká na dokončení před pokračováním. Tuto metodu lze použít ke zpoždění spouštění, dokud není signalizovat externí událostí.
StopAsync pokusí zastavit hostitele v zadaném časovém limitu.
WaitForShutdown blokuje volající vlákno, dokud se neaktivuje iHostLifetime, například prostřednictvím Ctrl+C/SIGINT (Windows), Ctrl+C (macOS) nebo SIGTERM.
WaitForShutdownAsync Task vrátí hodnotu, která se dokončí při vypnutí prostřednictvím daného tokenu a volání StopAsync.
Šablony ASP.NET Core vytvářejí obecného hostitele .NET Core (HostBuilder).
Tento článek obsahuje informace o používání obecného hostitele .NET v ASP.NET Core. Informace o používání obecného hostitele .NET v konzolových aplikacích naleznete v tématu .NET Generic Host.
Hostitel je objekt, který zapouzdřuje prostředky aplikace, například:
IHostedService
implementaceKdyž se hostitel spustí, volá IHostedService.StartAsync každou implementaci zaregistrované IHostedService v kolekci hostovaných služeb kontejneru služby. Jednou z IHostedService
implementací webové aplikace je webová služba, která spouští implementaci serveru HTTP.
Hlavním důvodem zahrnutí všech vzájemně závislých prostředků aplikace v jednom objektu je správa životnosti: kontrola nad spuštěním aplikace a řádné vypnutí.
Hostitel je obvykle nakonfigurovaný, sestavený a spouštěný kódem ve Program
třídě. Metoda Main
:
CreateHostBuilder
pro vytvoření a konfiguraci objektu tvůrce.Build
a Run
metody objektu tvůrceWebové šablony ASP.NET Core generují následující kód pro vytvoření hostitele:
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>();
});
}
Následující kód vytvoří úlohu bez HTTP s implementací přidanou IHostedService
do kontejneru DI.
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>();
});
}
U úlohy HTTP je metoda stejná, Main
ale CreateHostBuilder
volá ConfigureWebHostDefaults
:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
Pokud aplikace používá Entity Framework Core, nezměníte název ani podpis CreateHostBuilder
metody. Nástroje Entity Framework Core očekávají, že najdou metoduCreateHostBuilder
, která nakonfiguruje hostitele bez spuštění aplikace. Další informace naleznete v tématu Vytvoření DbContext v době návrhu.
Metoda CreateDefaultBuilder:
DOTNET_
.appsettings.json
.appsettings.{Environment}.json
.Development
.Metoda ConfigureWebHostDefaults:
ASPNETCORE_
.ASPNETCORE_FORWARDEDHEADERS_ENABLED
equals true
.Části Nastavení pro všechny typy aplikací a Nastavení webových aplikací dále v tomto článku ukazují, jak přepsat výchozí nastavení tvůrce.
Následující služby se registrují automaticky:
Další informace o službách poskytovaných architekturou najdete v tématu Injektáž závislostí v ASP.NET Core.
IHostApplicationLifetime Vložte službu (dříveIApplicationLifetime
) do jakékoli třídy pro zpracování úloh po spuštění a řádném vypnutí. Tři vlastnosti rozhraní jsou tokeny zrušení používané k registraci metod spuštění aplikace a zastavení aplikace obslužné rutiny událostí. Rozhraní také obsahuje metodu StopApplication
.
Následující příklad je IHostedService
implementace, která registruje IHostApplicationLifetime
události:
internal class LifetimeEventsHostedService : IHostedService
{
private readonly ILogger _logger;
private readonly IHostApplicationLifetime _appLifetime;
public LifetimeEventsHostedService(
ILogger<LifetimeEventsHostedService> logger,
IHostApplicationLifetime appLifetime)
{
_logger = logger;
_appLifetime = appLifetime;
}
public Task StartAsync(CancellationToken cancellationToken)
{
_appLifetime.ApplicationStarted.Register(OnStarted);
_appLifetime.ApplicationStopping.Register(OnStopping);
_appLifetime.ApplicationStopped.Register(OnStopped);
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
private void OnStarted()
{
_logger.LogInformation("OnStarted has been called.");
// Perform post-startup activities here
}
private void OnStopping()
{
_logger.LogInformation("OnStopping has been called.");
// Perform on-stopping activities here
}
private void OnStopped()
{
_logger.LogInformation("OnStopped has been called.");
// Perform post-stopped activities here
}
}
Implementace IHostLifetime řídí, kdy se hostitel spustí a kdy se zastaví. Použije se poslední zaregistrovaná implementace.
Microsoft.Extensions.Hosting.Internal.ConsoleLifetime
je výchozí IHostLifetime
implementace.
ConsoleLifetime
:
IHostEnvironment Vložte službu do třídy, abyste získali informace o následujících nastaveních:
Webové aplikace implementují IWebHostEnvironment
rozhraní, které dědí IHostEnvironment
a přidává WebRootPath.
Konfigurace hostitele se používá pro vlastnosti IHostEnvironment implementace.
Konfigurace hostitele je k dispozici uvnitř HostBuilderContext.ConfigurationConfigureAppConfiguration.
ConfigureAppConfiguration
Po HostBuilderContext.Configuration
nahrazení konfigurace aplikace.
Chcete-li přidat konfiguraci hostitele, zavolejte ConfigureHostConfigurationIHostBuilder
.
ConfigureHostConfiguration
lze volat vícekrát s doplňkovými výsledky. Hostitel používá jakoukoli možnost, která nastaví hodnotu poslední pro daný klíč.
Zprostředkovatel proměnné prostředí s předponou DOTNET_
a argumenty příkazového řádku jsou součástí CreateDefaultBuilder
. U webových aplikací se přidá zprostředkovatel proměnných prostředí s předponou ASPNETCORE_
. Předpona se odebere při čtení proměnných prostředí. Například hodnota proměnné prostředí pro ASPNETCORE_ENVIRONMENT
se stane hodnotou konfigurace hostitele pro environment
klíč.
Následující příklad vytvoří konfiguraci hostitele:
// using Microsoft.Extensions.Configuration;
Host.CreateDefaultBuilder(args)
.ConfigureHostConfiguration(configHost =>
{
configHost.SetBasePath(Directory.GetCurrentDirectory());
configHost.AddJsonFile("hostsettings.json", optional: true);
configHost.AddEnvironmentVariables(prefix: "PREFIX_");
configHost.AddCommandLine(args);
});
Konfigurace aplikace se vytvoří voláním ConfigureAppConfigurationIHostBuilder
.
ConfigureAppConfiguration
lze volat vícekrát s doplňkovými výsledky. Aplikace používá jakoukoli možnost, která nastaví hodnotu poslední pro daný klíč.
Konfigurace vytvořená službou ConfigureAppConfiguration
je k dispozici HostBuilderContext.Configuration pro následné operace a jako služba z DI. Do konfigurace aplikace se přidá také konfigurace hostitele.
Další informace najdete v tématu Konfigurace v ASP.NET Core.
Tato část obsahuje seznam nastavení hostitele, která platí pro úlohy HTTP i jiné úlohy než HTTP. Ve výchozím nastavení můžou mít proměnné prostředí použité ke konfiguraci těchto nastavení předponu DOTNET_
nebo ASPNETCORE_
předponu, která se zobrazí v následujícím seznamu nastavení jako {PREFIX_}
zástupný symbol. Další informace najdete v části Výchozí nastavení tvůrce a Konfigurace: Proměnné prostředí.
Vlastnost je nastavena IHostEnvironment.ApplicationName z konfigurace hostitele během vytváření hostitelů.
Klíč: applicationName
Typ: string
Výchozí hodnota: Název sestavení, které obsahuje vstupní bod aplikace.
Proměnná prostředí: {PREFIX_}APPLICATIONNAME
K nastavení této hodnoty použijte proměnnou prostředí.
Vlastnost IHostEnvironment.ContentRootPath určuje, kde hostitel začne hledat soubory obsahu. Pokud cesta neexistuje, hostitel se nespustí.
Klíč: contentRoot
Typ: string
Výchozí hodnota: Složka, ve které se nachází sestavení aplikace.
Proměnná prostředí: {PREFIX_}CONTENTROOT
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseContentRoot
IHostBuilder
:
Host.CreateDefaultBuilder(args)
.UseContentRoot("c:\\content-root")
//...
Další informace naleznete v tématu:
Vlastnost IHostEnvironment.EnvironmentName lze nastavit na libovolnou hodnotu. Hodnoty definované architekturou zahrnují Development
, Staging
a Production
. U hodnot se nerozlišuje malá a velká písmena.
Klíč: environment
Typ: string
Výchozí hodnota: Production
Proměnná prostředí: {PREFIX_}ENVIRONMENT
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseEnvironment
IHostBuilder
:
Host.CreateDefaultBuilder(args)
.UseEnvironment("Development")
//...
HostOptions.ShutdownTimeout nastaví časový limit pro StopAsync. Výchozí hodnota je pět sekund. Během časového limitu hostitel:
Pokud vyprší časový limit před zastavením všech hostovaných služeb, všechny zbývající aktivní služby se zastaví, když se aplikace vypne. Služby se zastaví i v případě, že nedokončily zpracování. Pokud služby vyžadují k zastavení více času, zvyšte časový limit.
Klíč: shutdownTimeoutSeconds
Typ: int
Výchozí hodnota: 5 sekund
Proměnná prostředí: {PREFIX_}SHUTDOWNTIMEOUTSECONDS
K nastavení této hodnoty použijte proměnnou prostředí nebo nakonfigurujte HostOptions
. Následující příklad nastaví časový limit na 20 sekund:
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.Configure<HostOptions>(option =>
{
option.ShutdownTimeout = System.TimeSpan.FromSeconds(20);
});
});
Ve výchozím appsettings.json
se appsettings.{Environment}.json
při změně souboru znovu načte. Pokud chcete toto chování opětovného hostBuilder:reloadConfigOnChange
načítání zakázat v ASP.NET Core 5.0 nebo novějším, nastavte klíč na false
.
Klíč: hostBuilder:reloadConfigOnChange
Typ: bool
(true
nebo false
)
Výchozí hodnota: true
Argument příkazového řádku: hostBuilder:reloadConfigOnChange
Proměnná prostředí: {PREFIX_}hostBuilder:reloadConfigOnChange
Upozornění
Oddělovač dvojtečky (:
) nefunguje s hierarchickými klíči proměnných prostředí na všech platformách. Další informace naleznete v tématu Proměnné prostředí.
Některá nastavení hostitele platí jenom pro úlohy HTTP. Ve výchozím nastavení můžou mít proměnné prostředí použité ke konfiguraci těchto nastavení předponu DOTNET_
nebo ASPNETCORE_
předponu, která se zobrazí v následujícím seznamu nastavení jako {PREFIX_}
zástupný symbol.
Pro tato nastavení jsou k dispozici metody IWebHostBuilder
rozšíření. Ukázky kódu, které ukazují, jak volat metody rozšíření předpokládá webBuilder
je instance IWebHostBuilder
, jako v následujícím příkladu:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.CaptureStartupErrors(true);
webBuilder.UseStartup<Startup>();
});
Pokud false
dojde k chybám při spuštění, dojde k ukončení hostitele. Když true
hostitel zaznamená výjimky při spuštění a pokusí se spustit server.
Klíč: captureStartupErrors
Typ: bool
(true
/1
nebo false
/0
)
Výchozí hodnota: Výchozí hodnota platí, false
pokud aplikace neběží se Kestrel službou IIS, kde výchozí hodnota je true
.
Proměnná prostředí: {PREFIX_}CAPTURESTARTUPERRORS
K nastavení této hodnoty použijte konfiguraci nebo volání CaptureStartupErrors
:
webBuilder.CaptureStartupErrors(true);
Když je prostředí povolené nebo když je Development
prostředí, aplikace zaznamenává podrobné chyby.
Klíč: detailedErrors
Typ: bool
(true
/1
nebo false
/0
)
Výchozí hodnota: false
Proměnná prostředí: {PREFIX_}DETAILEDERRORS
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting(WebHostDefaults.DetailedErrorsKey, "true");
Středník oddělený řetězec hostování spouštěcích sestavení, která se mají načíst při spuštění. I když se hodnota konfigurace ve výchozím nastavení nastaví na prázdný řetězec, hostitelské spouštěcí sestavení vždy obsahují sestavení aplikace. Při hostování spouštěcích sestavení se přidají do sestavení aplikace pro načtení, když aplikace během spouštění sestaví své běžné služby.
Klíč: hostingStartupAssemblies
Typ: string
Výchozí: Prázdný řetězec
Proměnná prostředí: {PREFIX_}HOSTINGSTARTUPASSEMBLIES
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting(WebHostDefaults.HostingStartupAssembliesKey, "assembly1;assembly2");
Středník oddělený řetězec hostování spouštěcích sestavení, která se mají vyloučit při spuštění.
Klíč: hostingStartupExcludeAssemblies
Typ: string
Výchozí: Prázdný řetězec
Proměnná prostředí: {PREFIX_}HOSTINGSTARTUPEXCLUDEASSEMBLIES
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting(WebHostDefaults.HostingStartupExcludeAssembliesKey, "assembly1;assembly2");
Port pro přesměrování HTTPS. Používá se při vynucování HTTPS.
Klíč: https_port
Typ: string
Výchozí hodnota: Výchozí hodnota není nastavená.
Proměnná prostředí: {PREFIX_}HTTPS_PORT
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting("https_port", "8080");
Určuje, jestli má hostitel naslouchat adresám URL nakonfigurovaným IWebHostBuilder
namísto těchto adres URL nakonfigurovaných s implementací IServer
.
Klíč: preferHostingUrls
Typ: bool
(true
/1
nebo false
/0
)
Výchozí hodnota: false
Proměnná prostředí: {PREFIX_}PREFERHOSTINGURLS
K nastavení této hodnoty použijte proměnnou prostředí nebo volání PreferHostingUrls
:
webBuilder.PreferHostingUrls(true);
Zabraňuje automatickému načítání hostitelských spouštěcích sestavení, včetně hostování spouštěcích sestavení nakonfigurovaných sestavením aplikace. Další informace viz Použití hostujících spouštěcích sestavení v ASP.NET Core.
Klíč: preventHostingStartup
Typ: bool
(true
/1
nebo false
/0
)
Výchozí hodnota: false
Proměnná prostředí: {PREFIX_}PREVENTHOSTINGSTARTUP
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseSetting
:
webBuilder.UseSetting(WebHostDefaults.PreventHostingStartupKey, "true");
Sestavení, které má vyhledat Startup
třídu.
Klíč: startupAssembly
Typ: string
Výchozí: Sestavení aplikace
Proměnná prostředí: {PREFIX_}STARTUPASSEMBLY
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseStartup
.
UseStartup
může převzít název sestavení (string
) nebo typ (TStartup
). Pokud se volá více UseStartup
metod, má přednost poslední metoda.
webBuilder.UseStartup("StartupAssemblyName");
webBuilder.UseStartup<Startup>();
Pokud je tato možnost povolená, potlačí hostování stavových zpráv při spuštění.
Klíč: suppressStatusMessages
Typ: bool
(true
/1
nebo false
/0
)
Výchozí hodnota: false
Proměnná prostředí: {PREFIX_}SUPPRESSSTATUSMESSAGES
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting(WebHostDefaults.SuppressStatusMessagesKey, "true");
Seznam IP adres nebo hostitelských adres oddělených středníkem s porty a protokoly, na kterých má server naslouchat žádostem. Například http://localhost:123
. Pomocí *označte, že server by měl naslouchat žádostem na libovolné IP adrese nebo názvu hostitele pomocí zadaného portu a protokolu (například http://*:5000
). Protokol (http://
nebo https://
) musí být součástí každé adresy URL. Podporované formáty se mezi servery liší.
Klíč: urls
Typ: string
Výchozí hodnota: http://localhost:5000
a https://localhost:5001
Proměnná prostředí: {PREFIX_}URLS
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseUrls
:
webBuilder.UseUrls("http://*:5000;http://localhost:5001;https://hostname:5002");
Kestrel má vlastní rozhraní API konfigurace koncového bodu. Další informace najdete v tématu Kestrel ASP.NET Core.
Vlastnost IWebHostEnvironment.WebRootPath určuje relativní cestu ke statickým prostředkům aplikace. Pokud cesta neexistuje, použije se zprostředkovatel souboru no-op.
Klíč: webroot
Typ: string
Výchozí hodnota: Výchozí hodnota je wwwroot
. Cesta k adresáři {content root}/wwwroot musí existovat.
Proměnná prostředí: {PREFIX_}WEBROOT
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseWebRoot
IWebHostBuilder
:
webBuilder.UseWebRoot("public");
Další informace naleznete v tématu:
Volání metod v vytvořené IHost implementaci pro spuštění a zastavení aplikace Tyto metody ovlivňují všechny IHostedService implementace zaregistrované v kontejneru služby.
Rozdíl mezi Run*
metodami Start*
spočívá v tom, že Run*
metody čekají na dokončení hostitele před vrácením, zatímco Start*
metody se vrátí okamžitě. Metody Run*
se obvykle používají v konzolových aplikacích, zatímco Start*
metody se obvykle používají v dlouhotrvajících službách.
Run spustí aplikaci a zablokuje volající vlákno, dokud se hostitel nevypíná.
RunAsync spustí aplikaci a vrátí Task , která se dokončí při aktivaci tokenu zrušení nebo vypnutí.
RunConsoleAsync umožňuje podporu konzoly, sestavení a spuštění hostitele a čeká na vypnutí Ctrl+C/SIGINT (Windows), Ctrl+C (macOS) nebo SIGTERM.
Start spustí hostitele synchronně.
StartAsync spustí hostitele a vrátí Task , který se dokončí při aktivaci tokenu zrušení nebo vypnutí.
WaitForStartAsync je volána na začátku StartAsync
, který čeká na dokončení před pokračováním. Tuto metodu lze použít ke zpoždění spouštění, dokud není signalizovat externí událostí.
StopAsync pokusí zastavit hostitele v zadaném časovém limitu.
WaitForShutdown blokuje volající vlákno, dokud se neaktivuje iHostLifetime, například prostřednictvím Ctrl+C/SIGINT (Windows), Ctrl+C (macOS) nebo SIGTERM.
WaitForShutdownAsync Task vrátí hodnotu, která se dokončí při vypnutí prostřednictvím daného tokenu a volání StopAsync.
Přímé řízení životnosti hostitele lze dosáhnout pomocí metod, které lze volat externě:
public class Program
{
private IHost _host;
public Program()
{
_host = new HostBuilder()
.Build();
}
public async Task StartAsync()
{
_host.StartAsync();
}
public async Task StopAsync()
{
using (_host)
{
await _host.StopAsync(TimeSpan.FromSeconds(5));
}
}
}
Šablony ASP.NET Core vytvářejí obecného hostitele .NET Core (HostBuilder).
Tento článek obsahuje informace o používání obecného hostitele .NET v ASP.NET Core. Informace o používání obecného hostitele .NET v konzolových aplikacích naleznete v tématu .NET Generic Host.
Hostitel je objekt, který zapouzdřuje prostředky aplikace, například:
IHostedService
implementaceKdyž se hostitel spustí, volá IHostedService.StartAsync každou implementaci zaregistrované IHostedService v kolekci hostovaných služeb kontejneru služby. Jednou z IHostedService
implementací webové aplikace je webová služba, která spouští implementaci serveru HTTP.
Hlavním důvodem zahrnutí všech vzájemně závislých prostředků aplikace v jednom objektu je správa životnosti: kontrola nad spuštěním aplikace a řádné vypnutí.
Hostitel je obvykle nakonfigurovaný, sestavený a spouštěný kódem ve Program
třídě. Metoda Main
:
CreateHostBuilder
pro vytvoření a konfiguraci objektu tvůrce.Build
a Run
metody objektu tvůrceWebové šablony ASP.NET Core generují následující kód pro vytvoření obecného hostitele:
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>();
});
}
Následující kód vytvoří obecného hostitele pomocí úlohy jiného typu než HTTP. Implementace IHostedService
se přidá do kontejneru DI:
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>();
});
}
U úlohy HTTP je metoda stejná, Main
ale CreateHostBuilder
volá ConfigureWebHostDefaults
:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
Předchozí kód je generován šablonami ASP.NET Core.
Pokud aplikace používá Entity Framework Core, nezměníte název ani podpis CreateHostBuilder
metody. Nástroje Entity Framework Core očekávají, že najdou metoduCreateHostBuilder
, která nakonfiguruje hostitele bez spuštění aplikace. Další informace naleznete v tématu Vytvoření DbContext v době návrhu.
Metoda CreateDefaultBuilder:
DOTNET_
.appsettings.json
.appsettings.{Environment}.json
.Development
.Metoda ConfigureWebHostDefaults
:
ASPNETCORE_
.ASPNETCORE_FORWARDEDHEADERS_ENABLED
equals true
.Části Nastavení pro všechny typy aplikací a Nastavení webových aplikací dále v tomto článku ukazují, jak přepsat výchozí nastavení tvůrce.
Následující služby se registrují automaticky:
Další informace o službách poskytovaných architekturou najdete v tématu Injektáž závislostí v ASP.NET Core.
IHostApplicationLifetime Vložte službu (dříveIApplicationLifetime
) do jakékoli třídy pro zpracování úloh po spuštění a řádném vypnutí. Tři vlastnosti rozhraní jsou tokeny zrušení používané k registraci metod spuštění aplikace a zastavení aplikace obslužné rutiny událostí. Rozhraní také obsahuje metodu StopApplication
.
Následující příklad je IHostedService
implementace, která registruje IHostApplicationLifetime
události:
internal class LifetimeEventsHostedService : IHostedService
{
private readonly ILogger _logger;
private readonly IHostApplicationLifetime _appLifetime;
public LifetimeEventsHostedService(
ILogger<LifetimeEventsHostedService> logger,
IHostApplicationLifetime appLifetime)
{
_logger = logger;
_appLifetime = appLifetime;
}
public Task StartAsync(CancellationToken cancellationToken)
{
_appLifetime.ApplicationStarted.Register(OnStarted);
_appLifetime.ApplicationStopping.Register(OnStopping);
_appLifetime.ApplicationStopped.Register(OnStopped);
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
private void OnStarted()
{
_logger.LogInformation("OnStarted has been called.");
// Perform post-startup activities here
}
private void OnStopping()
{
_logger.LogInformation("OnStopping has been called.");
// Perform on-stopping activities here
}
private void OnStopped()
{
_logger.LogInformation("OnStopped has been called.");
// Perform post-stopped activities here
}
}
Implementace IHostLifetime řídí, kdy se hostitel spustí a kdy se zastaví. Použije se poslední zaregistrovaná implementace.
Microsoft.Extensions.Hosting.Internal.ConsoleLifetime
je výchozí IHostLifetime
implementace.
ConsoleLifetime
:
IHostEnvironment Vložte službu do třídy, abyste získali informace o následujících nastaveních:
Webové aplikace implementují IWebHostEnvironment
rozhraní, které dědí IHostEnvironment
a přidává WebRootPath.
Konfigurace hostitele se používá pro vlastnosti IHostEnvironment implementace.
Konfigurace hostitele je k dispozici uvnitř HostBuilderContext.ConfigurationConfigureAppConfiguration.
ConfigureAppConfiguration
Po HostBuilderContext.Configuration
nahrazení konfigurace aplikace.
Chcete-li přidat konfiguraci hostitele, zavolejte ConfigureHostConfigurationIHostBuilder
.
ConfigureHostConfiguration
lze volat vícekrát s doplňkovými výsledky. Hostitel používá jakoukoli možnost, která nastaví hodnotu poslední pro daný klíč.
Zprostředkovatel proměnné prostředí s předponou DOTNET_
a argumenty příkazového řádku jsou součástí CreateDefaultBuilder
. U webových aplikací se přidá zprostředkovatel proměnných prostředí s předponou ASPNETCORE_
. Předpona se odebere při čtení proměnných prostředí. Například hodnota proměnné prostředí pro ASPNETCORE_ENVIRONMENT
se stane hodnotou konfigurace hostitele pro environment
klíč.
Následující příklad vytvoří konfiguraci hostitele:
// using Microsoft.Extensions.Configuration;
Host.CreateDefaultBuilder(args)
.ConfigureHostConfiguration(configHost =>
{
configHost.SetBasePath(Directory.GetCurrentDirectory());
configHost.AddJsonFile("hostsettings.json", optional: true);
configHost.AddEnvironmentVariables(prefix: "PREFIX_");
configHost.AddCommandLine(args);
});
Konfigurace aplikace se vytvoří voláním ConfigureAppConfigurationIHostBuilder
.
ConfigureAppConfiguration
lze volat vícekrát s doplňkovými výsledky. Aplikace používá jakoukoli možnost, která nastaví hodnotu poslední pro daný klíč.
Konfigurace vytvořená službou ConfigureAppConfiguration
je k dispozici HostBuilderContext.Configuration pro následné operace a jako služba z DI. Do konfigurace aplikace se přidá také konfigurace hostitele.
Další informace najdete v tématu Konfigurace v ASP.NET Core.
Tato část obsahuje seznam nastavení hostitele, která platí pro úlohy HTTP i jiné úlohy než HTTP. Ve výchozím nastavení můžou mít proměnné prostředí použité ke konfiguraci těchto nastavení předponu DOTNET_
nebo ASPNETCORE_
předponu, které se zobrazí v následující konfiguraci zástupného symbolu {PREFIX_}
.
Vlastnost je nastavena IHostEnvironment.ApplicationName z konfigurace hostitele během vytváření hostitelů.
Klíč: applicationName
Typ: string
Výchozí hodnota: Název sestavení, které obsahuje vstupní bod aplikace.
Proměnná prostředí: {PREFIX_}APPLICATIONNAME
K nastavení této hodnoty použijte proměnnou prostředí.
Vlastnost IHostEnvironment.ContentRootPath určuje, kde hostitel začne hledat soubory obsahu. Pokud cesta neexistuje, hostitel se nespustí.
Klíč: contentRoot
Typ: string
Výchozí hodnota: Složka, ve které se nachází sestavení aplikace.
Proměnná prostředí: {PREFIX_}CONTENTROOT
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseContentRoot
IHostBuilder
:
Host.CreateDefaultBuilder(args)
.UseContentRoot("c:\\content-root")
//...
Další informace naleznete v tématu:
Vlastnost IHostEnvironment.EnvironmentName lze nastavit na libovolnou hodnotu. Hodnoty definované architekturou zahrnují Development
, Staging
a Production
. U hodnot se nerozlišuje malá a velká písmena.
Klíč: environment
Typ: string
Výchozí hodnota: Production
Proměnná prostředí: {PREFIX_}ENVIRONMENT
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseEnvironment
IHostBuilder
:
Host.CreateDefaultBuilder(args)
.UseEnvironment("Development")
//...
HostOptions.ShutdownTimeout nastaví časový limit pro StopAsync. Výchozí hodnota je pět sekund. Během časového limitu hostitel:
Pokud vyprší časový limit před zastavením všech hostovaných služeb, všechny zbývající aktivní služby se zastaví, když se aplikace vypne. Služby se zastaví i v případě, že nedokončily zpracování. Pokud služby vyžadují k zastavení více času, zvyšte časový limit.
Klíč: shutdownTimeoutSeconds
Typ: int
Výchozí hodnota: 5 sekund
Proměnná prostředí: {PREFIX_}SHUTDOWNTIMEOUTSECONDS
K nastavení této hodnoty použijte proměnnou prostředí nebo nakonfigurujte HostOptions
. Následující příklad nastaví časový limit na 20 sekund:
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.Configure<HostOptions>(option =>
{
option.ShutdownTimeout = System.TimeSpan.FromSeconds(20);
});
});
Některá nastavení hostitele platí jenom pro úlohy HTTP. Ve výchozím nastavení můžou mít proměnné prostředí používané ke konfiguraci těchto nastavení předponu nebo DOTNET_
předponuASPNETCORE_
.
Pro tato nastavení jsou k dispozici metody IWebHostBuilder
rozšíření. Ukázky kódu, které ukazují, jak volat metody rozšíření předpokládá webBuilder
je instance IWebHostBuilder
, jako v následujícím příkladu:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.CaptureStartupErrors(true);
webBuilder.UseStartup<Startup>();
});
Pokud false
dojde k chybám při spuštění, dojde k ukončení hostitele. Když true
hostitel zaznamená výjimky při spuštění a pokusí se spustit server.
Klíč: captureStartupErrors
Typ: bool
(true
/1
nebo false
/0
)
Výchozí hodnota: Výchozí hodnota platí, false
pokud aplikace neběží se Kestrel službou IIS, kde výchozí hodnota je true
.
Proměnná prostředí: {PREFIX_}CAPTURESTARTUPERRORS
K nastavení této hodnoty použijte konfiguraci nebo volání CaptureStartupErrors
:
webBuilder.CaptureStartupErrors(true);
Když je prostředí povolené nebo když je Development
prostředí, aplikace zaznamenává podrobné chyby.
Klíč: detailedErrors
Typ: bool
(true
/1
nebo false
/0
)
Výchozí hodnota: false
Proměnná prostředí: {PREFIX_}DETAILEDERRORS
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting(WebHostDefaults.DetailedErrorsKey, "true");
Středník oddělený řetězec hostování spouštěcích sestavení, která se mají načíst při spuštění. I když se hodnota konfigurace ve výchozím nastavení nastaví na prázdný řetězec, hostitelské spouštěcí sestavení vždy obsahují sestavení aplikace. Při hostování spouštěcích sestavení se přidají do sestavení aplikace pro načtení, když aplikace během spouštění sestaví své běžné služby.
Klíč: hostingStartupAssemblies
Typ: string
Výchozí: Prázdný řetězec
Proměnná prostředí: {PREFIX_}HOSTINGSTARTUPASSEMBLIES
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting(WebHostDefaults.HostingStartupAssembliesKey, "assembly1;assembly2");
Středník oddělený řetězec hostování spouštěcích sestavení, která se mají vyloučit při spuštění.
Klíč: hostingStartupExcludeAssemblies
Typ: string
Výchozí: Prázdný řetězec
Proměnná prostředí: {PREFIX_}HOSTINGSTARTUPEXCLUDEASSEMBLIES
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting(WebHostDefaults.HostingStartupExcludeAssembliesKey, "assembly1;assembly2");
Port pro přesměrování HTTPS. Používá se při vynucování HTTPS.
Klíč: https_port
Typ: string
Výchozí hodnota: Výchozí hodnota není nastavená.
Proměnná prostředí: {PREFIX_}HTTPS_PORT
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting("https_port", "8080");
Určuje, jestli má hostitel naslouchat adresám URL nakonfigurovaným IWebHostBuilder
namísto těchto adres URL nakonfigurovaných s implementací IServer
.
Klíč: preferHostingUrls
Typ: bool
(true
/1
nebo false
/0
)
Výchozí hodnota: false
Proměnná prostředí: {PREFIX_}PREFERHOSTINGURLS
K nastavení této hodnoty použijte proměnnou prostředí nebo volání PreferHostingUrls
:
webBuilder.PreferHostingUrls(true);
Zabraňuje automatickému načítání hostitelských spouštěcích sestavení, včetně hostování spouštěcích sestavení nakonfigurovaných sestavením aplikace. Další informace viz Použití hostujících spouštěcích sestavení v ASP.NET Core.
Klíč: preventHostingStartup
Typ: bool
(true
/1
nebo false
/0
)
Výchozí hodnota: false
Proměnná prostředí: {PREFIX_}PREVENTHOSTINGSTARTUP
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseSetting
:
webBuilder.UseSetting(WebHostDefaults.PreventHostingStartupKey, "true");
Sestavení, které má vyhledat Startup
třídu.
Klíč: startupAssembly
Typ: string
Výchozí: Sestavení aplikace
Proměnná prostředí: {PREFIX_}STARTUPASSEMBLY
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseStartup
.
UseStartup
může převzít název sestavení (string
) nebo typ (TStartup
). Pokud se volá více UseStartup
metod, má přednost poslední metoda.
webBuilder.UseStartup("StartupAssemblyName");
webBuilder.UseStartup<Startup>();
Pokud je tato možnost povolená, potlačí hostování stavových zpráv při spuštění.
Klíč: suppressStatusMessages
Typ: bool
(true
/1
nebo false
/0
)
Výchozí hodnota: false
Proměnná prostředí: {PREFIX_}SUPPRESSSTATUSMESSAGES
K nastavení této hodnoty použijte konfiguraci nebo volání UseSetting
:
webBuilder.UseSetting(WebHostDefaults.SuppressStatusMessagesKey, "true");
Seznam IP adres nebo hostitelských adres oddělených středníkem s porty a protokoly, na kterých má server naslouchat žádostem. Například http://localhost:123
. Pomocí *označte, že server by měl naslouchat žádostem na libovolné IP adrese nebo názvu hostitele pomocí zadaného portu a protokolu (například http://*:5000
). Protokol (http://
nebo https://
) musí být součástí každé adresy URL. Podporované formáty se mezi servery liší.
Klíč: urls
Typ: string
Výchozí hodnota: http://localhost:5000
a https://localhost:5001
Proměnná prostředí: {PREFIX_}URLS
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseUrls
:
webBuilder.UseUrls("http://*:5000;http://localhost:5001;https://hostname:5002");
Kestrel má vlastní rozhraní API konfigurace koncového bodu. Další informace najdete Kestrel na webovém serveru v ASP.NET Core.
Vlastnost IWebHostEnvironment.WebRootPath určuje relativní cestu ke statickým prostředkům aplikace. Pokud cesta neexistuje, použije se zprostředkovatel souboru no-op.
Klíč: webroot
Typ: string
Výchozí hodnota: Výchozí hodnota je wwwroot
. Cesta k adresáři {content root}/wwwroot musí existovat.
Proměnná prostředí: {PREFIX_}WEBROOT
K nastavení této hodnoty použijte proměnnou prostředí nebo volání UseWebRoot
IWebHostBuilder
:
webBuilder.UseWebRoot("public");
Další informace naleznete v tématu:
Volání metod v vytvořené IHost implementaci pro spuštění a zastavení aplikace Tyto metody ovlivňují všechny IHostedService implementace zaregistrované v kontejneru služby.
Rozdíl mezi Run*
metodami Start*
spočívá v tom, že Run*
metody čekají na dokončení hostitele před vrácením, zatímco Start*
metody se vrátí okamžitě. Metody Run*
se obvykle používají v konzolových aplikacích, zatímco Start*
metody se obvykle používají v dlouhotrvajících službách.
Run spustí aplikaci a zablokuje volající vlákno, dokud se hostitel nevypíná.
RunAsync spustí aplikaci a vrátí Task , která se dokončí při aktivaci tokenu zrušení nebo vypnutí.
RunConsoleAsync umožňuje podporu konzoly, sestavení a spuštění hostitele a čeká na vypnutí Ctrl+C/SIGINT (Windows), Ctrl+C (macOS) nebo SIGTERM.
Start spustí hostitele synchronně.
StartAsync spustí hostitele a vrátí Task , který se dokončí při aktivaci tokenu zrušení nebo vypnutí.
WaitForStartAsync je volána na začátku StartAsync
, který čeká na dokončení před pokračováním. Tuto metodu lze použít ke zpoždění spouštění, dokud není signalizovat externí událostí.
StopAsync pokusí zastavit hostitele v zadaném časovém limitu.
WaitForShutdown blokuje volající vlákno, dokud se neaktivuje iHostLifetime, například prostřednictvím Ctrl+C/SIGINT (Windows), Ctrl+C (macOS) nebo SIGTERM.
WaitForShutdownAsync Task vrátí hodnotu, která se dokončí při vypnutí prostřednictvím daného tokenu a volání StopAsync.
Přímé řízení životnosti hostitele lze dosáhnout pomocí metod, které lze volat externě:
public class Program
{
private IHost _host;
public Program()
{
_host = new HostBuilder()
.Build();
}
public async Task StartAsync()
{
_host.StartAsync();
}
public async Task StopAsync()
{
using (_host)
{
await _host.StopAsync(TimeSpan.FromSeconds(5));
}
}
}
Poznámka
Odkazy na dokumentaci k referenčnímu zdroji .NET obvykle načítají výchozí větev úložiště, která představuje aktuální vývoj pro příští verzi .NET. Pokud chcete vybrat značku pro konkrétní verzi, použijte rozevírací seznam pro přepnutí větví nebo značek. Další informace najdete v tématu Jak vybrat značku verze zdrojového kódu ASP.NET Core (dotnet/AspNetCore.Docs #26205).
Zpětná vazba k produktu ASP.NET Core
ASP.NET Core je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Události
Mistrovství Světa v Power BI DataViz
14. 2. 16 - 31. 3. 16
Se 4 šance na vstup, můžete vyhrát konferenční balíček a udělat to na LIVE Grand Finale v Las Vegas
Další informaceŠkolení
Modul
Konfigurace služeb pomocí injektáže závislostí v ASP.NET Core - Training
Vysvětlení a implementace injektáže závislostí v aplikaci ASP.NET Core Ke správě závislostí použijte integrovaný kontejner služby ASP.NET Core. Zaregistrujte služby v kontejneru služby.
Dokumentace
Seznamte se s webovým hostitelem v ASP.NET Core, který zodpovídá za správu po spuštění a životnosti aplikace.
Použití hostování spouštěcích sestavení v ASP.NET Core
Zjistěte, jak vylepšit aplikaci ASP.NET Core z externího sestavení pomocí implementace IHostingStartup.
Naučte se používat rozhraní API pro konfiguraci ke konfiguraci nastavení AppSettings v aplikaci ASP.NET Core.
ASP0010: Nepoužívejte UseStartup s WebApplicationBuilder.WebHost
Informace o ASP0010 analytického pravidla: Nepoužívejte UseStartup s WebApplicationBuilder.WebHost