Základy ASP.NET Core
tento článek poskytuje přehled klíčových témat pro porozumění, jak vyvíjet aplikace ASP.NET Core.
Spouštěcí třída
StartupTřída je:
- Služby vyžadované aplikací jsou nakonfigurované.
- Kanál pro zpracování požadavků aplikace je definován jako série součástí middlewaru.
Tady je ukázková Startup Třída:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
services.AddControllersWithViews();
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app)
{
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
endpoints.MapRazorPages();
});
}
}
Další informace naleznete v tématu Spuštění aplikace v ASP.NET Core.
Injektáž závislostí (služby)
ASP.NET Core obsahuje integrovanou platformu pro vkládání závislostí (DI), která zpřístupňuje nakonfigurované služby v celé aplikaci. Komponenta protokolování je například služba.
Do metody se přidá kód pro konfiguraci (nebo registrování) služeb Startup.ConfigureServices . Například:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<RazorPagesMovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
services.AddControllersWithViews();
services.AddRazorPages();
}
Služby jsou obvykle vyřešeny z DI pomocí injektáže konstruktoru. Pomocí injektáže konstruktoru třída deklaruje parametr konstruktoru buď požadovaného typu, nebo rozhraní. Rozhraní DI Framework poskytuje instanci této služby za běhu.
Následující příklad používá vkládání konstruktoru k vyřešení RazorPagesMovieContext od di:
public class IndexModel : PageModel
{
private readonly RazorPagesMovieContext _context;
public IndexModel(RazorPagesMovieContext context)
{
_context = context;
}
// ...
public async Task OnGetAsync()
{
Movies = await _context.Movies.ToListAsync();
}
}
Pokud integrovaný IoC kontejner inverze nesplňuje všechny požadavky aplikace, můžete místo toho použít kontejner IoC třetí strany.
Další informace naleznete v tématu Injektáž závislostí v ASP.NET Core.
Middleware
Kanál pro zpracování žádostí se skládá z řady middlewarových součástí. Každá komponenta provádí operace s HttpContext a buď vyvolá další middleware v kanálu, nebo ukončí požadavek.
Podle konvence je do kanálu přidána komponenta middleware vyvoláním Use... metody rozšíření v Startup.Configure metodě. Chcete-li například povolit vykreslování statických souborů, zavolejte UseStaticFiles .
Následující příklad konfiguruje kanál zpracování žádostí:
public void Configure(IApplicationBuilder app)
{
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
endpoints.MapRazorPages();
});
}
ASP.NET Core obsahuje bohatou sadu předdefinovaných middlewarů. Je také možné zapsat vlastní součásti middlewaru.
Další informace naleznete v tématu ASP.NET Core Jiné.
Hostitel
při spuštění aplikace ASP.NET Core vytvoří hostitele. Hostitel zapouzdřuje všechny prostředky aplikace, například:
- Implementace HTTP serveru
- Komponenty middlewaru
- protokolování
- Služby pro vkládání závislostí (DI)
- Konfigurace
Existují dva různé hostitele:
- Obecný hostitel .NET
- ASP.NET Core Webový hostitel
Doporučuje se obecný hostitel .NET. webový hostitel ASP.NET Core je k dispozici pouze pro zpětnou kompatibilitu.
Následující příklad vytvoří obecný hostitel .NET:
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>();
});
}
CreateDefaultBuilderMetody a ConfigureWebHostDefaults konfigurují hostitele pomocí sady výchozích možností, jako například:
- Slouží Kestrel jako webový server a povoluje integraci služby IIS.
- Načíst konfiguraci z appsettings.json , appSettings. { Název prostředí}. JSON, proměnné prostředí, argumenty příkazového řádku a další zdroje konfigurace.
- Odešlete výstup protokolování do konzoly a zprostředkovatele ladění.
Další informace naleznete v tématu Obecný hostitel .NET v ASP.NET Core.
Jiné než webové scénáře
Obecný hostitel umožňuje jiným typům aplikací používat rozšíření rozhraní pro průřez, jako je protokolování, vkládání závislostí (DI), konfigurace a správa životního cyklu aplikací. Další informace naleznete v tématech Obecný hostitel .NET v ASP.NET Core a Úlohy na pozadí s hostovanými službami v ASP.NET Core.
Servery
ASP.NET Core aplikace používá implementaci http serveru k naslouchání požadavkům http. Serverový povrch vyžádá aplikaci jako sadu funkcí požadavků složených do HttpContext .
ASP.NET Core poskytuje následující implementace serveru:
- Kestrel je webový server pro různé platformy. Kestrel je často spouštěna v konfiguraci reverzního proxy serveru pomocí služby IIS. v ASP.NET Core 2,0 nebo novějším se Kestrel dá spustit jako veřejně přístupný hraniční server, který je přístupný přímo na internetu.
- HTTP server iis je server pro Windows, který používá službu iis. s tímto serverem aplikace ASP.NET Core a služba IIS běží ve stejném procesu.
- HTTP.sys je server pro Windows, který se nepoužívá se službou IIS.
Další informace naleznete v tématu Implementace webového serveru v ASP.NET Core.
Konfigurace
ASP.NET Core poskytuje konfigurační rozhraní, které získá nastavení jako páry název-hodnota z seřazené sady poskytovatelů konfigurace. Předdefinovaná poskytovatelé konfigurace jsou k dispozici pro nejrůznější zdroje, například soubory . JSON , soubory .xml , proměnné prostředí a argumenty příkazového řádku. Napište vlastní poskytovatele konfigurace pro podporu jiných zdrojů.
ve výchozím nastaveníjsou aplikace ASP.NET Core nakonfigurované pro čtení z appsettings.json , proměnných prostředí, příkazového řádku a dalších. Když je načtena konfigurace aplikace, hodnoty z proměnných prostředí přepíší hodnoty z appsettings.json .
Upřednostňovaným způsobem, jak číst související konfigurační hodnoty, je použít vzor možností. Další informace najdete v tématu vázání hierarchických konfiguračních dat pomocí vzoru možností.
Pro správu důvěrných konfiguračních dat, jako jsou hesla, poskytuje .NET Core správce tajnýchkódů. V případě produkčních tajných kódů doporučujeme Azure Key Vault.
Další informace naleznete v tématu Konfigurace v ASP.NET Core.
Prostředí
Spouštěcí prostředí, jako jsou Development , Staging a Production , jsou první třídou pojmu v ASP.NET Core. Určete prostředí, ve kterém je aplikace spuštěná, nastavením ASPNETCORE_ENVIRONMENT proměnné prostředí. ASP.NET Core přečte tuto proměnnou prostředí při spuštění aplikace a uloží hodnotu v IWebHostEnvironment implementaci. Tato implementace je k dispozici kdekoli v aplikaci prostřednictvím injektáže závislosti (DI).
Následující příklad nakonfiguruje aplikaci tak, aby při spuštění v prostředí poskytovala podrobné informace o chybě Development :
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();
endpoints.MapRazorPages();
});
}
Další informace naleznete v tématu Používání více prostředí v ASP.NET Core.
protokolování
ASP.NET Core podporuje protokolovací rozhraní API, které funguje s řadou integrovaných poskytovatelů protokolování a jiných výrobců. Mezi dostupné zprostředkovatele patří:
- Konzola
- Ladění
- Trasování událostí při Windows
- Windows Protokol událostí
- TraceSource
- Azure App Service
- Azure Application Insights
Pokud chcete vytvořit protokoly, vyřešte ILogger<TCategoryName> službu injektáží závislostí (DI) a volejte metody protokolování, jako je LogInformation . Například:
public class TodoController : ControllerBase
{
private readonly ILogger _logger;
public TodoController(ILogger<TodoController> logger)
{
_logger = logger;
}
[HttpGet("{id}", Name = "GetTodo")]
public ActionResult<TodoItem> GetById(string id)
{
_logger.LogInformation(LoggingEvents.GetItem, "Getting item {Id}", id);
// Item lookup code removed.
if (item == null)
{
_logger.LogWarning(LoggingEvents.GetItemNotFound, "GetById({Id}) NOT FOUND", id);
return NotFound();
}
return item;
}
}
Metody protokolování, LogInformation jako je například podpora libovolného počtu polí. Tato pole se běžně používají k vytvoření zprávy , ale někteří zprostředkovatelé protokolování je odesílat do úložiště dat string jako samostatná pole. Tato funkce umožňuje zprostředkovateli protokolování implementovat sémantické protokolování,označované také jako strukturované protokolování .
Další informace naleznete v tématu Protokolování v .NET Core a ASP.NET Core.
Směrování
Trasa je vzor adresy URL, který je namapovaný na obslužnou rutinu. Obslužnou rutinou je obvykle Razor stránka, metoda akce v kontroleru MVC nebo middleware. ASP.NET Core směrování poskytuje kontrolu nad adresami URL používanými vaší aplikací.
Další informace naleznete v tématu Směrování v ASP.NET Core.
Zpracování chyb
ASP.NET Core obsahuje integrované funkce pro zpracování chyb, jako například:
- Stránka výjimky pro vývojáře
- Vlastní chybové stránky
- Stránky se statickým stavem kódu
- Zpracování výjimek při spuštění
Další informace naleznete v tématu Zpracování chyb v ASP.NET Core.
Vytváření požadavků HTTP
Implementace je IHttpClientFactory k dispozici pro vytváření HttpClient instancí. Továrna:
- Poskytuje centrální umístění pro pojmenování a konfiguraci
HttpClientlogických instancí. Můžete například zaregistrovat a nakonfigurovat klienta GitHubu pro přístup k GitHub. Zaregistrujte a nakonfigurujte výchozího klienta pro jiné účely. - Podporuje registraci a řetězení více obslužných rutin delegování pro sestavení kanálu middlewaru pro odchozí požadavky. Tento model se podobá ASP.NET Core příchozího middlewarového kanálu. Tento vzor poskytuje mechanismus pro správu průřezu obavy pro požadavky HTTP, včetně ukládání do mezipaměti, zpracování chyb, serializace a protokolování.
- Integruje se s Polly, oblíbenou knihovnou třetích stran pro zpracování přechodných chyb.
- Spravuje sdružování a životnost základních instancí, aby se zabránilo běžným problémům DNS, ke kterým dochází
HttpClientHandlerpři ručníHttpClientsprávě životnosti. - Přidá konfigurovatelné prostředí protokolování prostřednictvím pro ILogger všechny požadavky odeslané prostřednictvím klientů vytvořených továrnou.
Další informace naleznete v tématu Požadavky HTTP můžete provádět pomocí IHttpClientFactory v ASP.NET Core.
Kořen obsahu
Kořen obsahu je základní cestou pro:
- Spustitelný soubor hostující aplikaci (.exe).
- Zkompilovaná sestavení, která tvoří aplikaci (.dll).
- Soubory obsahu používané aplikací, například:
- Razor files (.cshtml, .razor)
- Konfigurační soubory (.json, .xml)
- Datové soubory (.db)
- Kořenový adresář webu, obvykle složka wwwroot.
Během vývoje se v kořenovém adresáři obsahu jako výchozí hodnotí kořenový adresář projektu. Tento adresář je také základní cestou k souborům obsahu aplikace i ke kořenovému adresáři webu. Zadejte jiný kořenový adresář obsahu nastavením jeho cesty při sestavování hostitele. Další informace najdete v tématu Kořenový adresář obsahu.
Kořenový web
Kořenový webový adresář je základní cesta pro veřejné statické soubory prostředků, například:
- Šablony stylů (.css)
- JavaScript (.js)
- Obrázky (.png, .jpg)
Ve výchozím nastavení se statické soubory obsluhouly pouze z kořenového adresáře webu a jeho podadresářů. Výchozí webová kořenová cesta je {content root}/wwwroot. Zadejte jiný webový kořenový adresář nastavením jeho cesty při sestavování hostitele. Další informace najdete v tématu Kořenový adresář webu.
Zabraňte publikování souborů v souboru wwwroot <Content> s položkou projektu v souboru projektu. Následující příklad zabrání publikování obsahu v adresáři wwwroot/local a jeho podadresářích:
<ItemGroup>
<Content Update="wwwroot\local\**\*.*" CopyToPublishDirectory="Never" />
</ItemGroup>
V Razor souborech .cshtml odkazuje tilda s lomítkem ( ~/ ) na kořenový webový adresář. Cesta začínající na ~/ se označuje jako virtuální cesta.
Další informace naleznete v tématu Statické soubory v ASP.NET Core.
Tento článek obsahuje přehled klíčových témat, která vám porozumí, jak vyvíjet ASP.NET Core aplikace.
Spouštěcí třída
Třída Startup je where:
- Služby vyžadované aplikací jsou nakonfigurované.
- Definuje se kanál zpracování požadavků.
Služby jsou komponenty, které aplikace používá. Například komponenta protokolování je služba. Do metody se přidá kód pro konfiguraci (nebo Startup.ConfigureServices registraci) služeb.
Kanál zpracování požadavků se skládá z řady komponent middlewaru. Middleware může například zpracovávat požadavky na statické soubory nebo přesměrovat požadavky HTTP na HTTPS. Každý middleware provádí asynchronní operace s objektem a potom buď vyvolá další middleware v HttpContext kanálu, nebo ukončí požadavek. Kód pro konfiguraci kanálu zpracování požadavků se přidá do Startup.Configure metody .
Tady je ukázková Startup třída:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddDbContext<MovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MovieDb")));
}
public void Configure(IApplicationBuilder app)
{
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseMvc();
}
}
Další informace naleznete v tématu Spuštění aplikace v ASP.NET Core.
Injektáž závislostí (služby)
ASP.NET Core má integrovanou rozhraní pro injektáž závislostí, které získejte nakonfigurované služby dostupné pro třídy aplikace. Jedním ze způsob, jak získat instanci služby ve třídě, je vytvořit konstruktor s parametrem požadovaného typu. Parametrem může být typ služby nebo rozhraní. Systém utiliky poskytuje službu za běhu.
Tady je třída, která používá di k získání Entity Framework Core objektu. Zvýrazněný řádek je příkladem injektáže konstruktoru:
public class IndexModel : PageModel
{
private readonly RazorPagesMovieContext _context;
public IndexModel(RazorPagesMovieContext context)
{
_context = context;
}
// ...
public async Task OnGetAsync()
{
Movies = await _context.Movies.ToListAsync();
}
}
I když je injekstruovaná funkce IN, je navržená tak, aby vám v případě dáváte přednost připojení ke kontejneru IoC (Inversion of Control) jiného výrobce.
Další informace naleznete v tématu Injektáž závislostí v ASP.NET Core.
Middleware
Kanál zpracování požadavků se skládá z řady komponent middlewaru. Každá komponenta provádí asynchronní operace s objektem a poté buď vyvolá další middleware v kanálu, nebo HttpContext ukončí požadavek.
Podle konvence se do kanálu přidá komponenta middlewaru vyvoláním metody Use... rozšíření Startup.Configure v metodě . Pokud například chcete povolit vykreslování statických souborů, zavolejte UseStaticFiles .
Zvýrazněný kód v následujícím příkladu nakonfiguruje kanál zpracování požadavků:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddDbContext<MovieContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MovieDb")));
}
public void Configure(IApplicationBuilder app)
{
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseMvc();
}
}
ASP.NET Core obsahuje bohatou sadu integrovaného middlewaru a můžete psát vlastní middleware.
Další informace naleznete v tématu ASP.NET Core Jiné.
Hostitel
Aplikace ASP.NET Core hostitele při spuštění. Hostitel je objekt, který zapouzdřuje všechny prostředky aplikace, například:
- Implementace serveru HTTP
- Komponenty middlewaru
- protokolování
- Di
- Konfigurace
Hlavním důvodem pro zahrnutí všech vzájemně závislých prostředků aplikace do jednoho objektu je správa životnosti: kontrola nad spouštěním a elegantním vypnutím aplikace.
K dispozici jsou dva hostitelé: Webový hostitel a Obecný hostitel. V ASP.NET Core 2.x je obecný hostitel pouze pro jiné než webové scénáře.
Kód pro vytvoření hostitele je v souboru Program.Main :
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
Metoda CreateDefaultBuilder konfiguruje hostitele s běžně používanými možnostmi, jako jsou následující:
- Použijte Kestrel jako webový server a povolte integraci služby IIS.
- Načtěte konfiguraci appsettings.json z , appsettings.{ Název prostředí}.json, proměnné prostředí, argumenty příkazového řádku a další zdroje konfigurace.
- Odeslání výstupu protokolování do konzoly a zprostředkovatelů ladění.
Další informace naleznete v tématu ASP.NET Core Webový hostitel.
Jiné než webové scénáře
Obecný hostitel umožňuje ostatním typům aplikací používat průřezová rozšíření architektury, jako je protokolování, injektáž závislostí (DI), konfigurace a správa životnosti aplikací. Další informace naleznete v tématech Obecný hostitel .NET v ASP.NET Core a Úlohy na pozadí s hostovanými službami v ASP.NET Core.
Servery
Aplikace ASP.NET Core používá implementaci serveru HTTP k naslouchání požadavkům HTTP. Server předá žádosti do aplikace jako sadu funkcí požadavků, které se skládají z HttpContext .
ASP.NET Core poskytuje následující implementace serveru:
- Kestrel je webový server pro více platforem. Kestrelse často používá v konfiguraci reverzního proxy serveru pomocí služby IIS. Kestrel lze spustit jako veřejně přístupná hraniční server vystavená přímo na internetu.
- Server HTTP služby IIS je server pro windows, který používá službu IIS. U tohoto serveru se ASP.NET Core aplikace a služba IIS spustí ve stejném procesu.
- HTTP.sys je server pro Windows, který se ve službě IIS používá.
ASP.NET Core poskytuje následující implementace serveru:
- Kestrel je webový server pro více platforem. Kestrelse často používá v konfiguraci reverzního proxy serveru pomocí služby IIS. Kestrel lze spustit jako veřejně přístupná hraniční server vystavená přímo na internetu.
- HTTP.sys je server pro Windows, který se ve službě IIS používá.
Další informace naleznete v tématu Implementace webového serveru v ASP.NET Core.
Konfigurace
ASP.NET Core poskytuje konfigurační rozhraní, které získá nastavení jako páry název-hodnota z uspořádané sady zprostředkovatelů konfigurace. Existují předdefinované zprostředkovatele konfigurace pro různé zdroje, jako jsou soubory JSON, soubory .xml, proměnné prostředí a argumenty příkazového řádku. Můžete také napsat vlastní zprostředkovatele konfigurace.
Můžete například určit, že konfigurace pochází z proměnných prostředí a appsettings.json . Když se pak požaduje hodnota ConnectionString, rozhraní v souboru vypadá appsettings.json jako první. Pokud se tam hodnota nachází, ale také v proměnné prostředí, bude mít přednost hodnota z proměnné prostředí.
Pro správu důvěrných konfiguračních dat, jako jsou hesla, poskytuje .NET Core nástroj Secret Manager. V případě produkčních tajných kódů doporučujeme použít Azure Key Vault.
Další informace naleznete v tématu Konfigurace v ASP.NET Core.
Možnosti
Pokud je to možné, ASP.NET Core se řídí vzorem možností pro ukládání a načítání hodnot konfigurace. Vzor možností používá třídy k reprezentaci skupin souvisejících nastavení.
Například následující kód nastaví možnosti WebSocket:
var options = new WebSocketOptions
{
KeepAliveInterval = TimeSpan.FromSeconds(120),
ReceiveBufferSize = 4096
};
app.UseWebSockets(options);
Další informace naleznete v tématu Vzor možností v ASP.NET Core.
Prostředí
Prostředí pro spouštění, jako jsou Vývojové, Pracovní a Produkční, jsou v ASP.NET Core. Nastavením proměnné prostředí můžete určit prostředí, ve kterých je aplikace ASPNETCORE_ENVIRONMENT spuštěná. ASP.NET Core načte proměnnou prostředí při spuštění aplikace a uloží hodnotu v IHostingEnvironment implementaci. Objekt prostředí je k dispozici kdekoli v aplikaci prostřednictvím IN.
Následující vzorový kód z třídy nakonfiguruje aplikaci tak, aby poskytovala podrobné informace o chybě pouze při Startup spuštění ve vývoji:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseMvc();
}
Další informace naleznete v tématu Používání více prostředí v ASP.NET Core.
protokolování
ASP.NET Core podporuje rozhraní API pro protokolování, které funguje s různými integrovanými zprostředkovateli protokolování a zprostředkovateli protokolování třetích stran. Mezi dostupné poskytovatele patří:
- Konzola
- Ladění
- Trasování událostí na Windows
- Windows Protokol událostí
- TraceSource
- Azure App Service
- Azure Application Insights
Zapisování protokolů odkudkoli v kódu aplikace získáním objektu z IN a ILogger voláním metod protokolu.
Tady je ukázkový kód, který používá objekt se zvýrazněnou injektáží konstruktoru a ILogger voláním metody protokolování.
public class TodoController : ControllerBase
{
private readonly ILogger _logger;
public TodoController(ILogger<TodoController> logger)
{
_logger = logger;
}
[HttpGet("{id}", Name = "GetTodo")]
public ActionResult<TodoItem> GetById(string id)
{
_logger.LogInformation(LoggingEvents.GetItem, "Getting item {Id}", id);
// Item lookup code removed.
if (item == null)
{
_logger.LogWarning(LoggingEvents.GetItemNotFound, "GetById({Id}) NOT FOUND", id);
return NotFound();
}
return item;
}
}
Rozhraní ILogger umožňuje předat poskytovateli protokolování libovolný počet polí. Pole se běžně používají k vytvoření řetězce zprávy, ale zprostředkovatel je může také odeslat jako samostatná pole do úložiště dat. Tato funkce umožňuje zprostředkovateli protokolování implementovat sémantické protokolování,označované také jako strukturované protokolování .
Další informace naleznete v tématu Protokolování v .NET Core a ASP.NET Core.
Směrování
Trasa je vzor adresy URL, který je namapovaný na obslužnou rutinu. Obslužnou rutinou je obvykle Razor stránka, metoda akce v kontroleru MVC nebo middleware. ASP.NET Core směrování poskytuje kontrolu nad adresami URL používanými vaší aplikací.
Další informace naleznete v tématu Směrování v ASP.NET Core.
Zpracování chyb
ASP.NET Core obsahuje integrované funkce pro zpracování chyb, jako například:
- Stránka výjimky pro vývojáře
- Vlastní chybové stránky
- Stránky se statickým stavem kódu
- Zpracování výjimek při spuštění
Další informace naleznete v tématu Zpracování chyb v ASP.NET Core.
Vytváření požadavků HTTP
Implementace je IHttpClientFactory k dispozici pro vytváření HttpClient instancí. Továrna:
- Poskytuje centrální umístění pro pojmenování a konfiguraci
HttpClientlogických instancí. Například klienta GitHubu je možné zaregistrovat a nakonfigurovat pro přístup k GitHub. Výchozí klient může být zaregistrovaný pro jiné účely. - Podporuje registraci a řetězení více obslužných rutin delegování pro sestavení kanálu middlewaru pro odchozí požadavky. Tento model se podobá příchozímu middlewaru v ASP.NET Core. Tento vzor poskytuje mechanismus pro správu průřezových problémů záležitosti týkající se požadavků HTTP, včetně ukládání do mezipaměti, zpracování chyb, serializace a protokolování.
- Integruje se s Polly, oblíbenou knihovnou třetích stran pro zpracování přechodných chyb.
- Spravuje sdružování a životnost základních instancí, aby se zabránilo běžným problémům DNS, ke kterým dochází
HttpClientHandlerpři ruční správěHttpClientživotnosti. - Přidá konfigurovatelné prostředí protokolování (prostřednictvím ) pro všechny požadavky odeslané
ILoggerprostřednictvím klientů vytvořených objektem pro vytváření.
Další informace naleznete v tématu Požadavky HTTP můžete provádět pomocí IHttpClientFactory v ASP.NET Core.
Kořen obsahu
Kořen obsahu je základní cesta k:
- Spustitelný soubor hostující aplikaci (.exe).
- Zkompilovaná sestavení, která tvoří aplikaci (.dll).
- Ne code content files used by the app, such as:
- Razor files (.cshtml, .razor)
- Konfigurační soubory (.json, .xml)
- Datové soubory (.db)
- Kořenový adresářwebu , obvykle publikovaná složka wwwroot.
Během vývoje:
- Kořenový adresář obsahu je ve výchozím nastavení kořenovým adresářem projektu.
- Kořenový adresář projektu slouží k vytvoření:
- Cesta k souborům obsahu aplikace, které nejsou kódem, v kořenovém adresáři projektu.
- Kořenový adresářwebu , obvykle složka wwwroot v kořenovém adresáři projektu.
Při sestavování hostitele je možné zadat kořenovou cestu alternativního obsahu. Další informace naleznete v tématu ASP.NET Core Webový hostitel.
Kořenový web
Kořenový webový adresář je základní cesta k veřejným souborům statických prostředků, které nejsou kódem, například:
- Šablony stylů (.css)
- JavaScript (.js)
- Obrázky (.png, .jpg)
Statické soubory se ve výchozím nastavení zstaví jenom z kořenového adresáře webu (a podadresářů).
Kořenová cesta webu je ve výchozím nastavení {content root}/wwwroot, ale při sestavování hostitele je možné zadat jiný webový kořenový adresář. Další informace najdete v tématu Kořenový adresář webu.
Zabraňte publikování souborů v souboru wwwroot <Content> s položkou projektu v souboru projektu. Následující příklad zabrání publikování obsahu v adresáři wwwroot/local a v podadresářích:
<ItemGroup>
<Content Update="wwwroot\local\**\*.*" CopyToPublishDirectory="Never" />
</ItemGroup>
V Razor souborech (.cshtml) odkazuje lomítko tilda ( ~/ ) na webový kořen. Cesta začínající na ~/ se označuje jako virtuální cesta.
Další informace naleznete v tématu Statické soubory v ASP.NET Core.