SimpleMembership, MVC4, AuthorizeAttribute und Rollen

Ich versuche, einigen meiner MVC4-Controller Berechtigungsattribute hinzuzufügen. Solange es sich um einen Plan handelt, funktionieren sie einwandfrei[Authorize] oder[Authorize(Users="myuser")], aber die Sekunde, die ich in irgendeiner Art von Rollenfilterung hinzufüge, fällt auseinander, z.[Authorize(Roles="admin")]. Ich bekomme dann Fehler wie:

Serverfehler in '/' Anwendung.

Beim Herstellen einer Verbindung zu SQL Server ist ein netzwerkbezogener oder instanzspezifischer Fehler aufgetreten. Der Server wurde nicht gefunden oder war nicht erreichbar. Stellen Sie sicher, dass der Instanzname korrekt ist und dass SQL Server so konfiguriert ist, dass Remoteverbindungen zulässig sind. (Anbieter: SQL Network Interfaces, Fehler: 26 - Fehler beim Suchen des angegebenen Servers / der angegebenen Instanz)

Beschreibung: Während der Ausführung der aktuellen Webanforderung ist eine nicht behandelte Ausnahme aufgetreten. Überprüfen Sie die Stapelablaufverfolgung, um weitere Informationen zu dem Fehler und dessen Ursprung im Code zu erhalten.

Fehler beim automatischen Erstellen der SQLExpress-Datenbankdatei:

Die Verbindungszeichenfolge gibt eine lokale SQL Server Express-Instanz an, die einen Datenbankspeicherort im Verzeichnis App_Data der Anwendung verwendet. Der Anbieter hat versucht, die Anwendungsdienstedatenbank automatisch zu erstellen, da der Anbieter festgestellt hat, dass die Datenbank nicht vorhanden ist. Die folgenden Konfigurationsanforderungen sind erforderlich, um das Vorhandensein der Anwendungsdienstedatenbank erfolgreich zu überprüfen und die Anwendungsdienstedatenbank automatisch zu erstellen:

Wenn die Anwendung unter Windows 7 oder Windows Server 2008 R2 ausgeführt wird, sind spezielle Konfigurationsschritte erforderlich, um die automatische Erstellung der Provider-Datenbank zu ermöglichen. Weitere Informationen finden Sie unter:http://go.microsoft.com/fwlink/?LinkId=160102. Wenn das App_Data-Verzeichnis der Anwendung noch nicht vorhanden ist, muss das Webserverkonto Lese- und Schreibzugriff auf das Anwendungsverzeichnis haben. Dies ist erforderlich, da das Webserverkonto das Verzeichnis App_Data automatisch erstellt, falls es noch nicht vorhanden ist. Wenn das App_Data-Verzeichnis der Anwendung bereits vorhanden ist, erfordert das Webserverkonto nur Lese- und Schreibzugriff auf das App_Data-Verzeichnis der Anwendung. Dies ist erforderlich, da das Webserverkonto versucht, zu überprüfen, ob die SQL Server Express-Datenbank bereits im App_Data-Verzeichnis der Anwendung vorhanden ist. Durch das Widerrufen des Lesezugriffs auf das Verzeichnis App_Data über das Web-Server-Konto kann der Anbieter nicht korrekt feststellen, ob die SQL Server Express-Datenbank bereits vorhanden ist. Dies führt zu einem Fehler, wenn der Anbieter versucht, ein Duplikat einer bereits vorhandenen Datenbank zu erstellen. Schreibzugriff ist erforderlich, da die Anmeldeinformationen des Webserverkontos beim Erstellen der neuen Datenbank verwendet werden. SQL Server Express muss auf dem Computer installiert sein. Die Prozessidentität für das Webserverkonto muss ein lokales Benutzerprofil haben. Weitere Informationen zum Erstellen eines lokalen Benutzerprofils für Computer- und Domänenkonten finden Sie in der Readme-Datei.

Quellfehler:

Während der Ausführung der aktuellen Webanforderung wurde eine nicht behandelte Ausnahme generiert. Informationen zu Ursprung und Position der Ausnahme können mithilfe des folgenden Ausnahmestapel-Trace ermittelt werden.

Stack Trace:

[SqlException (0x80131904): Beim Herstellen einer Verbindung zu SQL Server ist ein netzwerkbezogener oder instanzspezifischer Fehler aufgetreten. Der Server wurde nicht gefunden oder war nicht erreichbar. Stellen Sie sicher, dass der Instanzname korrekt ist und dass SQL Server so konfiguriert ist, dass Remoteverbindungen zulässig sind. (Anbieter: SQL Network Interfaces, Fehler: 26 - Fehler beim Suchen des angegebenen Servers / der angegebenen Instanz)]
System.Data.SqlClient.SqlInternalConnection.OnError (SqlException-Ausnahme, Boolean breakConnection, Action1 wrapCloseInAction) +5295167 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +242<br>System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) +5307115<br>System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) +145<br>System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) +920<br>System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) +307<br>System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions) +434<br>System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +5309659<br>System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) +38<br>System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource1 Wiederholung, DbConnectionOptions userOptions, DbConnectionInternal & connection) +5311874
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection (DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) +143<br>System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource1 Wiederholung) +83 System.Data.SqlClient.SqlConnection.Open () +96
System.Web.Management.SqlServices.GetSqlConnection (Zeichenfolgenserver, Zeichenfolgenbenutzer, Zeichenfolgenkennwort, Boolean Trusted, Zeichenfolgenverbindungszeichenfolge) +76

[HttpException (0x80004005): Es kann keine Verbindung zur SQL Server-Datenbank hergestellt werden.]
System.Web.Management.SqlServices.GetSqlConnection (Zeichenfolgenserver, Zeichenfolgenbenutzer, Zeichenfolgenkennwort, Boolesches vertrauenswürdiges Element, Zeichenfolgenverbindungszeichenfolge) +131
System.Web.Management.SqlServices.SetupApplicationServices (String-Server, String-Benutzer, String-Kennwort, Boolesches vertrauenswürdiges Element, String-Verbindungszeichenfolge, String-Datenbank, String-DB-Dateiname, SqlFeatures-Funktionen, Boolesche Installation) +89
System.Web.Management.SqlServices.Install (String-Datenbank, String dbFileName, String connectionString) +27
System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile (String fullFileName, String dataDir, String connectionString) +386

Versionsinformationen: Microsoft .NET Framework Version: 4.0.30319; ASP.NET Version: 4.0.30319.17929

Ich bin mir wirklich nicht sicher, was hier los ist. Wenn ich wieder das Rollenbit des Attributs "authorize" entferne, funktioniert es einwandfrei (was das Stoppen nicht autorisierter Benutzer betrifft), aber es ist nicht gut, wenn ich die Administratorbenutzer in der App fest codieren muss!

Hast du eine Idee, was hier passiert und wie ich es richtig machen kann?

Vielen Dank,

Antworten auf die Frage(5)

Ihre Antwort auf die Frage