Метод ConfigureServices
в классе Startup
является ключевым компонентом ASP.NET Core приложений и выполняет следующие функции:
public void ConfigureServices(IServiceCollection services)
{
// Регистрация сервисов здесь
}
services.AddTransient<IMyService, MyService>(); // Создается для каждого запроса
services.AddScoped<IUserRepository, UserRepository>(); // Один экземпляр на запрос
services.AddSingleton<ICacheService, CacheService>(); // Один экземпляр на все приложение
services.AddControllers(); // Добавление MVC сервисов
services.AddRazorPages(); // Поддержка Razor Pages
services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("Default")));
services.Configure<EmailSettings>(Configuration.GetSection("EmailSettings"));
services.Configure<ApiOptions>(options =>
{
options.BaseUrl = "https://api.example.com";
options.Timeout = TimeSpan.FromSeconds(30);
});
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = Configuration["Jwt:Issuer"],
ValidateAudience = true,
ValidAudience = Configuration["Jwt:Audience"],
ValidateLifetime = true,
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(Configuration["Jwt:Key"])),
ValidateIssuerSigningKey = true
};
});
Конфигурация:
Метод имеет доступ к IConfiguration
через свойство Configuration
класса Startup
Окружение:
Может использовать IWebHostEnvironment
для условной регистрации сервисов
Configure метод:
Зарегистрированные в ConfigureServices
сервисы становятся доступны в Configure
через DI
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IMyService myService)
{
// Зарегистрированные сервисы доступны здесь
}
Configure
if (env.IsDevelopment())
{
services.AddTransient<IMockService, DevMockService>();
}
else
{
services.AddTransient<IMockService, ProductionService>();
}
// В отдельном классе
public static class ServiceExtensions
{
public static IServiceCollection AddCustomServices(this IServiceCollection services)
{
services.AddScoped<IServiceA, ServiceA>();
services.AddSingleton<IServiceB, ServiceB>();
return services;
}
}
// В ConfigureServices
services.AddCustomServices();
Типичные ошибки:
ConfigureServices
(до построения провайдера)Лучшие практики:
Метод ConfigureServices
служит центральным местом для конфигурации системы зависимостей и настройки сервисов в ASP.NET Core приложениях. Его правильное использование критически важно для архитектуры приложения, производительности и тестируемости кода. Понимание работы этого метода позволяет эффективно управлять зависимостями и настраивать инфраструктуру приложения.