рдореИрдВ рдПрдХ рд╡реЗрдмрдЬреЙрдм рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдХреА рдореЗрд░реЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛ рд▓реЗрдХрд┐рди рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣реАрдВ рднреА рдСрдирд▓рд╛рдЗрди рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рди рд╣реА рдХрдВрд╕реЛрд▓ рдРрдк рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред
рд╢рд╛рдпрдж рдпрд╣ рдкреЛрд╕реНрдЯ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
ASP.NET 5 - ASP.NET 5 рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдПрдХ рдЧрд╣рд░реА рдбреБрдмрдХреА
https://msdn.microsoft.com/en-us/magazine/dn913182.aspx
рдпрд╣ рдЕрднреА рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рд╡рд╛ рд╕рдХрддрд╛ рд╣реВрдБ?
configservices рд╡рд┐рдзрд┐ рдФрд░ рдореЗрд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдлрд╝рд░, 4, рд╡рд░реНрд╖ 2016 10:21 AM рдкрд░, "chr1sk0n" [email protected] рд▓рд┐рдЦрд╛ рд╣реИ:
рд╢рд╛рдпрдж рдпрд╣ рдкреЛрд╕реНрдЯ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
ASP.NET 5 - ASP.NET 5 рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдПрдХ рдЧрд╣рд░реА рдбреБрдмрдХреА
https://msdn.microsoft.com/en-us/magazine/dn913182.aspx-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/aspnet/DependencyInjection/issues/357#issuecomment -179727288
.
рдХрд┐рд╕реА рд╡реЗрдмрдПрдк рд╕реЗ рдХрд┐рд╕реА рдХреЗ рдЖрдиреЗ рдХреА рдХреНрдпрд╛ рдЙрдореНрдореАрдж рд╣реЛрдЧреА рдЗрд╕рдХрд╛ рдПрдХ рд╕реНрдХреЗрдЪ:
public class Program
{
public IConfigurationRoot Configuration { get; set; }
public IServiceProvider ServiceProvider;
public Program(IApplicationEnvironment env, IRuntimeEnvironment runtime)
{
// What can I do with env and runtime?
var services = new ServiceCollection();
ServiceProvider = services.BuildServiceProvider();
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();
Configuration = builder.Build();
}
private void ConfigureServices(IServiceCollection services)
{
// Who calls this?
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<DbContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
services.AddScoped<IMyService, MyService>();
}
public void Run(IMyService service, DbContext dbContext)
{
// My program code.
}
public static void Main(string[] args)
{
// Entry point. What in here?
}
}
рдХреЛрдИ рдЙрдкрд╛рдп? рдХреГрдкрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд╣реЗрдВред
рдпрд╣ рдЕрднреА рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рд╡рд╛ рд╕рдХрддрд╛ рд╣реВрдБ?
configservices рд╡рд┐рдзрд┐ рдФрд░ рдореЗрд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдпрд╛ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдм рдРрдк, рдпрд╣ рд╕рдм рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдХреЗ рд▓рд┐рдП ConfigureServices
рдпрд╛ Program
рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдХреБрдЫ рднреА рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬ рдирд╣реАрдВ рд╣реИред
рдРрд╕рд╛ рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
public static class Program
{
public static void Main()
{
var services = new ServiceCollection();
// TODO: Add your services to the collection. Here you could call your own ConfigureServices method
var provider = services.BuildServiceProvider();
// TODO: Get the services you need from the provider.
}
}
рдпрджрд┐ рдЖрдк рдбреАрдПрдирдПрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕реЗрд╡рд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк Microsoft.Extensions.PlatformAbstractions
рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ IApplicationEnvironment
рдФрд░ IRuntimeEnvironment
рдкрдХрдбрд╝ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП PlatformServices. Default
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ IRuntimeEnvironment
ред
рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдЕрдкрд╡рд╛рдж рдорд┐рд▓рд╛:
No service for type 'IMyService' has been registered.
рдпрд╣ рдХреЛрдб рд╣реИ:
var services = new ServiceCollection();
// Set up configuration sources.
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();
Configuration = builder.Build();
ConfigureServices(services);
var provider = services.BuildServiceProvider();
IMyService service = provider.GetRequiredService<IMyService>();
рдЕрдЧрд░ рдореИрдВ GetService рдХреЗ рд▓рд┐рдП GetRequiredService рдмрджрд▓рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ:
Unable to resolve service for type 'Microsoft.AspNet.Http.IHttpContextAccessor' while attempting to activate 'IMyService'.
@pepevc рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдкреНрд░рд╢реНрди, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА ConfigureServices
рд╡рд┐рдзрд┐ рдХрдВрдЯреЗрдирд░ рдореЗрдВ Microsoft.AspNet.Http.IHttpContextAccessor
рд╕реЗрд╡рд╛ рдЬреЛрдбрд╝ рд░рд╣реА рд╣реИ? рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд╣рд╛рдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ ASP.NET рдореЗрдВ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ - рдпрд╣ рдЖрдкрдХрд╛ рдЕрдкрдирд╛ рдХрдВрд╕реЛрд▓ рдРрдк рд╣реИред
рдореИрдВ рдЦреЛрдЬ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЖрдпрд╛ рдерд╛: рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ EntityFramework рдХреЛ рдЙрд╕ рд╕реЗрд╡рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ ...
рдЖрдк рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рджред
рд╕рдВрдХреЗрдд: рд╡реАрдПрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдореВрд▓ рдХрдВрд╕реЛрд▓ рдРрдк рдореЗрдВ рдХреБрдЫ рдбреАрдЖрдИ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдо рд╕реЗ рдХрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрд┐рд▓реНрдбрд░ред
@pepevc рдЙрд╕рдХреЗ рд▓рд┐рдП https://github.com/aspnet/EntityFramework/issues/ рдореЗрдВ рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░
рд╡реАрдПрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдбреАрдЖрдИ рдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╣реАрдВ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╡реАрдПрд╕ рдореЗрдВ рдирд┐рдпрдорд┐рдд рдХрдВрд╕реЛрд▓ рдРрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ: рдЬреЗрдиреЗрд░рд┐рдХ рдРрдк рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдЪреАрдЬреЗрдВред
рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реЛрдЧрд╛, рдЙрд╕реА рддрд░рд╣ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ WebApps (рдЦрд╛рд▓реА, рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд╕рд╛рде, рдЖрджрд┐) рд╣реИред
рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреНрд▓рд╛рд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд╛рдБрдЪрд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдЕрдиреНрдпрдерд╛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рддрдХрдиреАрдХ рдореЗрдВ рдЕрдиреБрднрд╡рд╣реАрди рд▓реЛрдЧ рд╕рднреА рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдЦреЛ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рдХреЛрдб рдХреЗ рдПрдХ рдХрд╛рдо рдХреА рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЭрд▓рдХ рд╕реЗрдХрдВрдб рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреА рд╣реИред
@pepevc рдЖрдк рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд░реЗрдкреЛ рдореЗрдВ рдПрдХ рд╕реБрдЭрд╛рд╡ https://github.com/aspnet/Templates/issues/
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдХрд┐рд╕реА рд╡реЗрдмрдПрдк рд╕реЗ рдХрд┐рд╕реА рдХреЗ рдЖрдиреЗ рдХреА рдХреНрдпрд╛ рдЙрдореНрдореАрдж рд╣реЛрдЧреА рдЗрд╕рдХрд╛ рдПрдХ рд╕реНрдХреЗрдЪ:
рдХреЛрдИ рдЙрдкрд╛рдп? рдХреГрдкрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд╣реЗрдВред