2017-04-25 2 views
1

Wenn ich versuche, Roles.IsUserInRole ("roleX") oder eine verwandte Methode zu verwenden, bekomme ich ein Datenbankverbindungsproblem, wie man sehen kann here. Ich kann jederzeit auf Rollen in der Datenbank zugreifen und lesen/schreiben, also bin ich mir ziemlich sicher, dass ich keine Verbindungsprobleme habe. Alle Benutzer-IDs stimmen gut überein. Der Fehler tritt auch auf, wenn versucht wird, auf eine Controller-Methode zuzugreifen, die für eine bestimmte Rolle authentifiziert ist? Sobald eine Zeile in Bezug auf die Rollenüberprüfung angezeigt wird, stürzt die App sofort ab und nach etwa einer Minute werden Fehler gemeldet. Das einzige Mal, dass ich diesen Fehler bekomme, ist der Versuch, auf Rollen zuzugreifen, nicht sicher, ob die Identität irgendwie nicht mit der DB verbunden ist? Ich bin in dieser Sache völlig am Ende, das Einzige, was mir einfällt, ist, dass etwas mit Identität nicht richtig eingerichtet ist. Irgendwelche Ideen werden sehr geschätzt.ASP.NET MVC SQL Server nicht zugänglich beim Versuch, Rollen zu authentifizieren oder zuzugreifen?

+0

überprüfen Sie die Verbindungszeichenfolgen zu verwenden, sie befinden sich in der gleichen, um zu überprüfen Lage? – mason

+0

Sie sind, ich habe das mehrfach überprüft. Trotzdem danke! – LeRainman

+0

Sie können die Lösungsschritte in dieser Frage http://stackoverflow.com/questions/18060667/why-am-i-getting-cannot-connect-to-server-a-network-related-or-instance-speci finden. Markieren Sie diese Frage als doppelt. –

Antwort

2

Ihr Problem ist, dass Roles.IsUserInRole("roleX") nicht Teil des Identity-Framework ist. Dies ist Teil von MembershipProvider und Sie möchten es nicht verwenden. Grund für das Abrufen dieses Fehlers - MembershipProvider versucht, hilfreich zu sein und versucht, eine Verbindung zu einer Datenbank herzustellen, einer Datenbank, von der Sie noch nie gesprochen haben.

Wenn Sie überprüfen müssen, ob der aktuelle Benutzer in einer Rolle ist, verwenden Sie User.IsInRole("RoleX");. Wobei User Teil eines Controllers oder einer View ist. Oder Sie können es auch über HttpContext.Current.User.IsInRole("RoleX"); tun. Dies überprüft das Authentifizierungs-Cookie auf Informationen zu Rollen (alle Rollen für angemeldete Benutzer werden in Authentifizierungs-Cookie beibehalten).

Wenn Sie in der Datenbank tauchen mögen für Rollen für einen beliebigen Benutzer zu überprüfen (nicht die in einer angemeldet derzeit) - Sie benötigen ApplicationUserManager.IsInRoleAsync()

+1

Guter Fang, ich habe die Verwendung der Roles-Klasse im Vergleich zu User nicht bemerkt. –

Verwandte Themen