ASP.. NET 5在Startup类中的ConfigureServices中访问上下文或请求信息

本文关键字:上下文 访问 请求 信息 ConfigureServices Startup ASP NET | 更新日期: 2023-09-27 18:08:00

是否有可能在启动类中调用ConfigureServices方法时访问上下文或请求信息?

我想做的是决定根据URL或其他请求信息从数据库加载什么Facebook或MS认证信息。

public void ConfigureServices(IServiceCollection services)
    {
        // Add Entity Framework services to the services container.
        services.AddEntityFramework()
            .AddSqlServer()
            .AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
        // Add Identity services to the services container.
        services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();
        // Configure the options for the authentication middleware.
        // You can add options for Google, Twitter and other middleware as shown below.
        // For more information see http://go.microsoft.com/fwlink/?LinkID=532715
        services.Configure<FacebookAuthenticationOptions>(options =>
        {
            options.AppId = Configuration["Authentication:Facebook:AppId"];
            options.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
        });
        services.Configure<MicrosoftAccountAuthenticationOptions>(options =>
        {
            options.ClientId = Configuration["Authentication:MicrosoftAccount:ClientId"];
            options.ClientSecret = Configuration["Authentication:MicrosoftAccount:ClientSecret"];
        });

ASP.. NET 5在Startup类中的ConfigureServices中访问上下文或请求信息

Startup用于每个应用程序一次的配置,而不是每个请求一次。如果你需要对每个请求做一些事情,你应该在MVC/API控制器或中间件中做。

当前HttpContext由主机引擎设置。

在引擎构建应用程序之前的几行,这意味着在HttpContext可用之前已经调用了ConfigureServicesConfigure

这是有意义的,因为Startup类中的应用程序配置只在应用程序启动时调用,而不是在每次请求时调用。