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"];
});
…
Startup用于每个应用程序一次的配置,而不是每个请求一次。如果你需要对每个请求做一些事情,你应该在MVC/API控制器或中间件中做。
当前HttpContext
由主机引擎设置。
在引擎构建应用程序之前的几行,这意味着在HttpContext
可用之前已经调用了ConfigureServices
和Configure
。
这是有意义的,因为Startup
类中的应用程序配置只在应用程序启动时调用,而不是在每次请求时调用。