Pourquoi cela se produit-il lorsque nous appelons la méthode AccountApiController.Register ()?
"Message": "Une erreur est survenue",
"ExceptionMessage": "Le contexte ne peut pas être utilisé tant que le modèle est créé. Cette exception peut être levée si le contexte est utilisé À l'intérieur de la méthode OnModelCreating ou si la même instance de contexte est Accessible par plusieurs Notez que les membres d'instance de DbContext et les classes associées ne sont pas garantis d'être thread safe. ",
"ExceptionType": "System.InvalidOperationException",
"Trace de la pile":"
sur System.Web.Http.ApiController.d__1.MoveNext ()
--- Trace de fin de pile depuis l'emplacement précédent où une exception a été levée
à System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (tâche)
sur System.Runtime.CompilerServices.TaskAwaiter .HandleNonSuccessAndDebuggerNotification (Task> task)
sur System.Web.Http.Dispatcher.HttpControllerDispatcher.d__0.MoveNext () "
Le problème était que nous n’utilisions PAS le modèle d’usine recommandé par MS recommande .
Vous pouvez utiliser l'implémentation Factory pour obtenir une instance de UserManager du contexte OWIN. ... Ceci est une méthode recommandée pour obtenir une instance de UserManager par demande pour l'application.
En conséquence, "plusieurs threads accèdent simultanément à la même instance de contexte", car plusieurs requêtes, et donc des threads, ont partagé un DbContext.
Ce qui suit est correct. Il crée une nouvelle instance de MyDbContext pour chaque appel de la fonction UserManagerFactory.
UserManagerFactory
= () => new UserManager<IdentityUser>(new UserStore<IdentityUser>(new MyDbContext()));
Ce qui suit est incorrect. Il semble similaire mais ne crée pas de nouvelle instance pour chaque appel à UserManagerFactory. C'est ce que nous utilisions, car notre site a éclaté.
var userStore = new UserStore<IdentityUser>(new MyDbContext());
var userManager = new UserManager<IdentityUser>(userStore);
UserManagerFactory = () => userManager;
Cette erreur peut également se produire en cas de connectionString
incorrect. Vérifiez si connectionString
est valide (pas de faute de frappe, etc.).
Remplacez-vous la méthode OnModelCreating? Si oui, pouvez-vous la partager ou la classe de contexte entière?
Sinon, faites attention aux points suivants dans le message d'erreur
ou si plusieurs threads ont accès simultanément à la même instance de contexte. Notez que les membres d'instance de DbContext et les classes associées ne sont pas garantis d'être thread-safe.
Si cela ne vous aide pas, utilisez-vous un projet d'API Web non modifié créé par Visual Studio?
Si vous obtenez des enregistrements de Table/View, assurez-vous de disposer d'un accès suffisant aux objets de la base de données.
J'ai eu le même problème et je l'ai résolu en exécutant
sp_change_users_login [ @Action = ] 'action' [ , [ @UserNamePattern = ] 'user' ] [ , [ @LoginName = ] 'login' ] [ , [ @Password = ] 'password' ] [;]
sp_change_users_login 'update_one' 'dbuser' 'dblogin'
J'utilise EF Code First dans une architecture multicouche avec MySQL. J'avais la même exception. J'utilise la ligne suivante dans la structure DBContext Class:
Database.SetInitializer<EntitiesName>(null);