schrieb ich meine benutzerdefinierte Middleware, die ich inZugriff auf DbContext in Middleware in ASP.NET 5
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//...
app.UseAutologin();
app.UseMvc(routes =>
{
//...
hinzufügen So ist es die letzte Middleware vor dem Mvc ins Spiel kommt.
In meiner Middleware Invoke
Methode möchte ich (indirekt) auf die DbContext
zugreifen.
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);
}
Fast jedes Mal, wenn ich die folgende Ausnahme:
InvalidOperationException
: Es wurde versucht, den Kontext zu verwenden, während es konfiguriert wird. EineDbContext
Instanz kann nicht verwendet werden innerhalbOnConfiguring
, da es noch an diesem Punkt konfiguriert ist.
Nun wird dies deutlich durch die PasswordSignInAsync
Methode aufgeworfen. Aber wie kann ich sicherstellen, dass das Modell erstellt wurde, bevor Sie solche Dinge tun?
Vielleicht war ich nicht ganz klar: Ich möchte nicht die DbContext
selbst verwenden - die PasswordSignInAsync
verwendet es bei der Überprüfung des Benutzers und des Passworts.
ich einige Fehler haben . Hast du bitte eine Korrektur gefunden? – aguetat
Was versuchen Sie zu erreichen? – mayu