Erhielt die folgende ProviderException :
Die Rollenmanagerfunktion wurde nicht aktiviert.
So weit, ist es gut.
Gibt es irgendwo eine Methode, mit der überprüft werden kann, ob der Rollenmanager aktiviert wurde oder nicht?
c#
asp.net
roleprovider
gsharp
quelle
quelle
web.config
? Ich habe versucht, es einzulegenApplication_Start
und es heißtThis method can only be called during the application's pre-start initialization phase.
roleManager
ist aktiviert. Aber jetztUnable to connect to SQL Server database
Wenn Sie hierher gekommen sind, weil Sie das Neue verwenden
ASP.NET
Identity
UserManager
, suchen Sie tatsächlich FolgendesRoleManager
:roleManager
Sie erhalten Zugriff darauf, ob die Rolle vorhanden ist, erstellt usw. wird und für die Rolle erstellt wurdeUserManager
quelle
Ich habe an anderer Stelle über Google zwei Vorschläge gefunden, die vorschlugen: a) sicherzustellen, dass Ihre Datenbank-Verbindungszeichenfolge (die von Roles verwendete) korrekt ist und dass der Schlüssel dazu richtig geschrieben ist, und b) dass das Flag "Aktiviert" in RoleManager auf "true" gesetzt ist. Hoffe einer davon hilft. Es hat für mich getan.
Haben Sie versucht, Roles.Enabled zu überprüfen? Sie können auch Roles.Providers überprüfen, um festzustellen, wie viele Anbieter verfügbar sind, und Sie können den Roles.Provider für den Standardanbieter überprüfen. Wenn es null ist, gibt es keine.
quelle
Ich fand diese Frage aufgrund der darin erwähnten Ausnahme. Meine Web.Config hatte kein
<roleManager>
Tag. Ich erkannte, dass selbst wenn ich es hinzufügte (wie Infotekka vorschlug ), es in einer Datenbankausnahme endete. Nachdem Sie den Vorschlägen in den anderen Antworten hier gefolgt sind, hat keiner das Problem vollständig gelöst.Da diese Web.Config-Tags automatisch generiert werden können, war es falsch, sie durch manuelles Hinzufügen zu lösen. Wenn Sie sich in einem ähnlichen Fall befinden, machen Sie alle Änderungen rückgängig, die Sie an Web.Config und in Visual Studio vorgenommen haben:
Überprüfen Sie Ihre Web.config und jetzt sollten Sie mindestens ein
<providers>
Tag in den Tags Profil , Mitgliedschaft , SessionState und auch im neuen RoleManager- Tag haben, wie folgt :Fügen Sie
enabled="true"
wie folgt hinzu:Drücken Sie F6auf Erstellen, und jetzt sollte es in Ordnung sein, mit einer Datenbankaktualisierung fortzufahren, ohne diese Ausnahme zu haben:
update-database -verbose
und die Seed-Methode funktionieren einwandfrei (wenn Sie nicht an anderer Stelle herumgespielt haben) und erstellen einige Tabellen in Ihrer Datenbank.quelle
Wenn Sie verwenden
ASP.NET Identity UserManager
, können Sie es auch so bekommen:Wenn Sie beispielsweise den Schlüssel für den Benutzer von Guid in Int geändert haben, verwenden Sie diesen Code:
quelle
quelle
Hier ist der Code, den Sie in MVC5 und höher in Ihren Account Controller eingeben müssen, um die Liste der Rollen eines Benutzers abzurufen:
csharp public async Task<ActionResult> RoleAdd(string UserID) { return View(await UserManager.GetRolesAsync(UserID)).OrderBy(s => s).ToList()); }
Die Rollenmanagerfunktion muss nicht verwendet
Roles.GetRolesForUser()
und aktiviert werden.quelle