ho scritto il mio middleware personalizzati che aggiungo inAccesso DbContext in Middleware in ASP.NET 5
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
//...
app.UseAutologin();
app.UseMvc(routes =>
{
//...
Così è l'ultima prima del middleware MVC entra in gioco.
Nel metodo Invoke
del mio middleware, desidero accedere (indirettamente) allo 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);
}
Quasi ogni volta che ottengo la seguente eccezione:
InvalidOperationException
: Si è tentato di utilizzare il contesto mentre è in fase di configurazione. Un'istanzaDbContext
non può essere utilizzata all'interno diOnConfiguring
poiché è ancora in fase di configurazione in questo punto.
Ora questo è chiaramente sollevato dal metodo PasswordSignInAsync
. Ma come posso assicurarmi che il modello sia stato creato prima di fare queste cose?
Forse non ero del tutto chiaro: non voglio usare lo stesso DbContext
- lo PasswordSignInAsync
lo utilizza durante la verifica dell'utente e della password.
ho il un errore . Hai trovato una correzione per favore. – aguetat
Cosa stai cercando di ottenere? – mayu