【发布时间】:2015-10-21 07:55:58
【问题描述】:
我编写了我添加的自定义中间件
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//...
app.UseAutologin();
app.UseMvc(routes =>
{
//...
所以它是 Mvc 发挥作用之前的最后一个中间件。
在我的中间件的Invoke 方法中,我想(间接)访问DbContext。
public async Task Invoke(HttpContext context)
{
if (string.IsNullOrEmpty(context.User.Identity.Name))
{
var applicationContext = _serviceProvider.GetService<ApplicationDbContext>();
var signInManager = _serviceProvider.GetService<SignInManager<ApplicationUser>>();
var result = await signInManager.PasswordSignInAsync(_options.UserName, _options.Password, true, false);
}
await _next(context);
}
几乎每次我都会遇到以下异常:
InvalidOperationException: 尝试使用上下文 在配置时。无法使用DbContext实例 在OnConfiguring中,因为此时它仍在配置中。
现在PasswordSignInAsync 方法明确提出了这一点。但是我怎样才能确保模型是在做这些事情之前创建的呢?
也许我并不完全清楚:我不想自己使用DbContext - PasswordSignInAsync 在验证用户和密码时使用它。
【问题讨论】:
-
我有一些错误。请问你找到更正了吗?
-
你想达到什么目的?
标签: c# entity-framework asp.net-core asp.net-core-mvc