@Dudder

Обязательно ли добавлять службу и в builder и в app?

Например я захотел использовать CORS в проекте, есть пример в котором сначала служба добавляется, а после инициализации app уже вызывает метод UseСлужба:
var  MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddCors(options =>
{
    options.AddPolicy(name: MyAllowSpecificOrigins,
                      builder =>
                      {
                          builder.WithOrigins("http://example.com",
                                              "http://www.contoso.com");
                      });
});

// services.AddResponseCaching();

builder.Services.AddControllers();

var app = builder.Build();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();

app.UseCors(MyAllowSpecificOrigins);

app.UseAuthorization();

app.MapControllers();

app.Run();

И есть случай когда есть только Use:
var app = builder.Build();

app.UseCors(builder =>
{
    builder
       .WithOrigins("http://localhost:3000/%22)
       .SetIsOriginAllowedToAllowWildcardSubdomains()
       .AllowAnyHeader()
       .AllowCredentials()
       .WithMethods("GET", "PUT", "POST", "DELETE", "OPTIONS")
       .SetPreflightMaxAge(TimeSpan.FromSeconds(3600));
});


Мое предположение что builder.Services настраивает службу, а Use уже выполняет действия с настройками, а если явно не настроить все выполняется с настройками по умолчани
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
AddCors - добавляет службу в IServiceCollection.
UseCors - говорит аспнету, что нужно ещё добавить соответствующий middleware в конвеер обработки запроса.

Так что да, обязательно.
Если вызвать только AddCors - служба будет добавлена в контейнер, но никак не будет использоваться.
Если вызвать только UseCors - во время конструирования конвеера возникнет исключение, тк aspnet не сможет получить необходимые зависимости.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы