рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╣рдордиреЗ ASP.NET Core рдХреЛ 2.1 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ред рдордВрдЪ рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рд╣рдорд╛рд░реЗ рд╕рд╣рдпреЛрдЧреА рдбреЗрд╡рд┐рдб рдлрд╛рдЙрд▓рд░ рдиреЗ рдЗрд╕рдХреА рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╕рд╛рдЭрд╛ рдХреАрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдо рд╣реА рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, ASP.NET рдХреЛрд░ рдХреЗ 9 рдЧреБрдкреНрдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдЯ рдХреЗ рддрд╣рдд рдЖрдкрдХреЛ рд╕рднреА рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рднреА рдорд┐рд▓реЗрдЧреАред рдЕрдм рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реЛрдВ!

рдЦреБрд▓реЗ ASP.NET рдХреЛрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг 2.1 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдбреЗрд╡рд┐рдб рдлрд╛рдЙрд▓рд░
рдиреЗ рдЗрд╕рдХреА рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
рдЯреНрд╡реАрдЯ рдХреАрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдо рд╣реА рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдЕрдм рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рддреЗрдЬрд╝ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдФрд░ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рднреА рд╣реИрдВ рдЬреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред
ASP.NET Core рдЕрдм рдирдП рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред .NET рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдлреЙрд░реНрдо рдФрд░
рд╣реЛрд╕реНрдЯ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ ред
рдореЗрдЬрдмрд╛рди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЬреЗрдиреЗрд░рд┐рдХ рд╣реЛрд╕реНрдЯ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╣реЛрд╕реНрдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╣реЛрд╕реНрдЯ рдПрдкреАрдЖрдИ рд╕реЗ HTTP рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд┐рдВрдЧ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИред рдореИрд╕реЗрдЬрд┐рдВрдЧ, рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдФрд░ рдЕрдиреНрдп рдЧреИрд░-HTTP рдХрд╛рд░реНрдп рдПрдВрдб-рдЯреВ-рдПрдВрдб рдЬреЗрдирд░рд┐рдХ рд╣реЛрд╕реНрдЯ рдлреАрдЪрд░реНрд╕ рдЬреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди (DI) рдФрд░ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рд╡реЗрдм рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП, рди рдХреЗрд╡рд▓ рд╡реЗрдмрд╣реЛрд╕реНрдЯ рд╣реИ, рдмрд▓реНрдХрд┐ рдЬреЗрдиреЗрд░рд┐рдХ рд╣реЛрд╕реНрдЯ рднреА рд╣реИред рдЗрд╕реА рд╕рдордп, рдПрдПрд╕рдкреАрдиреЗрдЯ рдХреЛрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдЙрддрдирд╛ рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд╛рд╕ рдбреАрдЖрдИ, рд▓реЙрдЧрд┐рдВрдЧ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬреИрд╕реА рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рднреА рд╣реЛрдВрдЧреАред рдЬреЗрдирд┐рдЯ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдХреЛрдб
GitHub рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред
рдЗрд╕рдХреЗ рд╕рд╛рде, рдЖрдк рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реЛрд╕реНрдЯ рдФрд░ рдЕрдкрдиреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреЛрдиреЛрдВ рдореЗрдВ рд▓рдВрдмреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдСрдкрд░реЗрд╢рди рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред ASP.NET Core 2.1
рдиреЗ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рд╕рд░реНрд╡рд┐рд╕ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ
рд▓рд┐рдП рд╕рдорд░реНрдерди рд╢реБрд░реВ рдХрд┐рдпрд╛ , рдЬреЛ рдПрдХ рд▓рдВрдмреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реВрдк рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣реЛрд╕реНрдЯреЗрдб рд╕рд░реНрд╡рд┐рд╕ рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдХреЛрдб
GitHub рдкрд░ рднреА
рд╣реИ ред
рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрд╕реНрдерд╛рдпреА рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп
рдмрдирд╛рдПрдБ :
public Task StartAsync(CancellationToken cancellationToken) { _logger.LogInformation("Timed Background Service is starting."); _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5)); return Task.CompletedTask; }
рдЖрд░рд╛рдо рд╕реЗ!
рдЕрдм рдЖрдк Windows рд╕реЗрд╡рд╛ рдХреЗ рдЕрдВрджрд░ ASP.NET Core рдХреА рдореЗрдЬрдмрд╛рдиреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдЬреЛ рднреА рдЪрд╛рд╣рд┐рдП рдЙрд╕реЗ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм рдЖрдкрдХреЛ IIS рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
Microsoft.AspNetCore.Hosting.WindowsServices рдкрд░ NuGet рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдФрд░ IIS рдХреЗ рдмрд┐рдирд╛ рд╡рд┐рдВрдбреЛрдЬ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ ASP.NET рдХреЛрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдореЗрдЬрдмрд╛рдиреА
рдХрд░рдиреЗ рдкрд░
рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рд▓реЗрдЦрди ред
public static void Main(string[] args) { var pathToExe = Process.GetCurrentProcess().MainModule.FileName; var pathToContentRoot = Path.GetDirectoryName(pathToExe); var host = WebHost.CreateDefaultBuilder(args) .UseContentRoot(pathToContentRoot) .UseStartup<Startup>() .Build(); host.RunAsService(); }
IHOSTINGSTARTUP - рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде IWEBHOSTBUILDER рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, GitHub рдкрд░ рдПрдХ рд╕реНрд░реЛрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕рдЯреАрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
[assembly: HostingStartup(typeof(SampleStartups.StartupInjection))]
рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛, рдЙрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред рдЖрдк рд╕рд╛рдЭрд╛ рд╕реНрд░реЛрдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рддрд░рд┐рдд рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдмреАрдЪ, рд╣рдо рдЙрдиреНрд╣реЗрдВ "рд╕рд╛рдЭрд╛ рд╕реНрд░реЛрдд рдкреИрдХреЗрдЬ" рдХрд╣рддреЗ рд╣реИрдВред рд╡реЗ
ASP.NET рдХреЛрд░ рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрдм рдХреБрдЫ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд▓рдн рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░ рдЖрдкрдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рдкреИрдХреЗрдЬ рдкрд░ рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ CSPROJ
рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
PrivateAssets рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:
<PackageReference Include="Microsoft.Extensions.ClosedGenericMatcher.Sources" PrivateAssets="All" Version="" /> <PackageReference Include="Microsoft.Extensions.ObjectMethodExecutor.Sources" PrivateAssets="All" Version="" />
рдпрджрд┐ рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╡рд┐рдзрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИ, рддреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдФрд░ рд▓рдЪреАрд▓рд╛
ObjectMethodExecutor рдлрд╝рдВрдХреНрд╢рди, рдЬрд┐рд╕реЗ рд╣рдо ASP.NET рдХреЛрд░ рдХреЛрдб рдмреЗрд╕ рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред
рдЯреАрдо рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MVC рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рд╣рдм рдХреЛрдб рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗ рд╕рд┐рдЧреНрдирд▓ рдХреЛрдб рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдФрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрд╕реНрдЯрдо рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдПрдл # рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рдЫреЛрдЯреА рдФрд░ рдЕрдХреНрд╕рд░ рдЕрдиреБрд░реЛрдзрд┐рдд рд╡рд┐рдзрд┐ред рдпрджрд┐ рдЖрдк рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдбреЙрдЯрдиреЗрдЯ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЬреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рд╡реИрд╕рд╛ рдирд╣реАрдВ рд╣реИ (рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ), рддреЛ рдЖрдк рдирдИ рд╕рдкреНрд░реЗрд╕рд╕реНрдЯреИрдЯрдорд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
WebHost.CreateDefaultBuilder(args) .SuppressStatusMessages(true) .UseStartup<Startup>();
рд╕рдВрд╕реНрдХрд░рдг 2.1 рдореЗрдВ, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ IConfigureOptions рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдирд╛ рдерд╛, рдЕрдм рдЖрдк AddOptions рдФрд░ TOptions> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдореЗрдВ рдпрд╣ рд╕рдм рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
public void ConfigureServicdes(IServiceCollection services) { services.AddOptions<MyOptions>() .Configure<IHostingEnvironment>((o,env) => { o.Path = env.WebRootPath; }); }
рдЖрдорддреМрд░ рдкрд░ IHttpContext рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣
рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ , рдФрд░ рдХреБрдЫ рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдХрдореА рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, ASP.NET Core 2.1 рдореЗрдВ
, PR рдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП
рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ , рдЬреЛ рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдПрдЧрд╛ ред
services.AddHttpContextAccessor ();
рдЗрд╕рд▓рд┐рдП, ASP.NET Core 2.1
рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ ред
рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ:
рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП
ASP.NET Core 2.1 рдореЗрдВ ASP.NET Core
2.1 рдореЗрдВ
рд╣реБрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА
рд╕реВрдЪреА рджреЗрдЦреЗрдВред
рд░рд┐рд▓реАрдЬ рдиреЛрдЯреНрд╕ рдореЗрдВ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдкреНрд░рджрд╛рди
рдХреА рдЧрдИ рд╣реИ ред
рдЗрд╕реЗ рдЖрдЬрдорд╛рдЗрдП!
рдХреНрд╡рд┐рдХрд╕реНрдЯрд╛рд░реНрдЯ рдХреЛрд░реНрд╕ рд▓реЗрдВ рдФрд░ рдЖрдк 10 рдорд┐рдирдЯ рдореЗрдВ рдмреЗрд╕рд┐рдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред