Asp.net mvc 为什么我的MVC4授权检查会抛出异常?

Asp.net mvc 为什么我的MVC4授权检查会抛出异常?,asp.net-mvc,asp.net-mvc-4,forms-authentication,Asp.net Mvc,Asp.net Mvc 4,Forms Authentication,我正在将Visual Studio 2012与SQL Server Express 2012配合使用。我使用“Internet应用程序”模板创建了一个MVC4 Web应用程序 我想在我的SQL Server 2012 Express实例上使用现有数据库(与模板的MDF相反)。我修改了web.config,改为指向本地SQL express实例,并删除了模板生成的MDF。My Web.Config有: <add name="DefaultConnection" connection

我正在将Visual Studio 2012与SQL Server Express 2012配合使用。我使用“Internet应用程序”模板创建了一个MVC4 Web应用程序

我想在我的SQL Server 2012 Express实例上使用现有数据库(与模板的MDF相反)。我修改了web.config,改为指向本地SQL express实例,并删除了模板生成的MDF。My Web.Config有:

<add name="DefaultConnection" 
    connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Administration;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
一旦应用程序启动,就会像我所期望的那样在管理数据库中创建表。我可以创建用户,并在管理中填充用户。我可以通过代码填充roles表,并将角色添加到用户的配置文件中,并验证是否需要。e、 g:

Roles.GetRolesForUser("kristian"); // = string[] { "Administrator" }
但如果我尝试使用基于角色的授权,如:

[Authorize(Roles = "Administrator")]
我得到以下例外情况:

Failed to generate a user instance of SQL Server due to a failure in starting the process for the user instance. The connection will be closed.
它给出了一个很长很讨厌的堆栈跟踪,让我觉得它仍然在尝试创建MDF文件:

[SqlException(0x80131904):由于启动用户实例的进程失败,无法生成SQL Server的用户实例。连接将关闭。] System.Data.SqlClient.SqlInternalConnection.OnError(SqlException异常,布尔断开连接,Action
1 wrapCloseInAction)+5295167
System.Data.SqlClient.TdsParser.throweexception和warning(TdsParserStateObject stateObj,布尔调用者连接锁,布尔异步关闭)+242
System.Data.SqlClient.TdsParser.TryRun(RunBehavior RunBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,Boolean&dataReady)+1682
System.Data.SqlClient.TdsParser.Run(RunBehavior RunBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)+69
System.Data.SqlClient.SqlInternalConnectionDS.CompleteLogin(布尔登记OK)+30
System.Data.SqlClient.sqlinternalconnectionds.AttemptOneLogin(ServerInfo ServerInfo、String newPassword、SecureString newSecurePassword、Boolean ignoresnopentimeout、TimeoutTimer timeout、Boolean with failover)+317
System.Data.SqlClient.sqlinternalconnectionds.loginnofilover(ServerInfo ServerInfo,String newPassword,SecureString newSecurePassword,Boolean redirectedUserInstance,SqlConnectionString connectionOptions,SqlCredential凭证,TimeoutTimer timeout)+889
System.Data.SqlClient.SqlInternalConnectionDS.OpenLoginList(超时超时、SqlConnectionString连接选项、SqlCredential凭证、String新密码、SecureString newSecurePassword、Boolean redirectedUserInstance)+307
System.Data.SqlClient.SqlInternalConnectionDS..ctor(DbConnectionPoolIdentity、SqlConnectionString connectionOptions、SqlCredential凭证、对象提供者信息、String newPassword、SecureString newSecurePassword、Boolean redirectedUserInstance、SqlConnectionString userConnectionOptions)+434
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions选项、DbConnectionPoolKey poolKey、Object poolGroupProviderInfo、DbConnectionPool池、DbConnectionOwningConnection、DbConnectionOptions用户选项)+5309659
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection-owningConnection、DbConnectionPoolGroup-poolGroup、DbConnectionOptions-userOptions)+38
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection所有者连接、TaskCompletionSource
1重试、DbConnectionOptions用户选项、DbConnectionInternal和connection)+5311874 System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory,TaskCompletionSource
1重试,DbConnectionOptions用户选项)+143
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource
1重试)+83 System.Data.SqlClient.SqlConnection.Open()+96 System.Web.Management.SqlServices.GetSqlConnection(字符串服务器、字符串用户、字符串密码、布尔值可信、字符串连接字符串)+76

[HttpException(0x80004005):无法连接到SQL Server数据库。] System.Web.Management.SqlServices.GetSqlConnection(字符串服务器、字符串用户、字符串密码、布尔值可信、字符串连接字符串)+131 System.Web.Management.SqlServices.SetupApplicationServices(字符串服务器、字符串用户、字符串密码、布尔可信、字符串连接字符串、字符串数据库、字符串dbFileName、SqlFeatures、布尔安装)+89 System.Web.Management.SqlServices.Install(字符串数据库、字符串dbFileName、字符串连接字符串)+27 System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile(stringfullfilename、stringdatadir、stringconnectionstring)+386

这捆joy的底部的一行让我觉得它与现在删除的MDF('System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile')有关。我说的对吗?或者模板实现的授权是不完整的


如果其他人已经解决了这个问题,或者知道我的属性使用失败的原因,我将非常感谢您的帮助。

我也遇到了同样的问题。这似乎与未正确初始化SimpleMembership有关。尝试确保使用了
[InitializeSimpleMembership]
,或直接调用
数据库.SetInitializer(null)

我也有同样的问题。这似乎与未正确初始化SimpleMembership有关。尝试确保使用了
[InitializeSimpleMembership]
,或直接调用
数据库.SetInitializer(null)

是否尝试在整个解决方案(Ctrl-Shift F)中搜索“MDF”并替换?是否尝试在整个解决方案(Ctrl-Shift F)中搜索“MDF”并替换?
Failed to generate a user instance of SQL Server due to a failure in starting the process for the user instance. The connection will be closed.