我实现了ASP.NET Identity,并在App_Data文件夹中自动创建了ASPNETDB.MDF和aspnetdb_log.ldf。我的SQL Express实例中已经有AspNet表(即AspNetRoles,AspNetUsers等)(这是我所有其他表所在的位置)。据我所知,我的应用程序正在从SQL Express数据库而不是ASPNETDB.MDF中读取和写入成员资格和角色数据。

我已将web.config中的connectionString设置为:

<add name="DefaultConnection" connectionString="Data Source=MyComputerName\SQLEXPRESS;Initial Catalog=MyDatabaseName;Integrated Security=True" providerName="System.Data.SqlClient" />


但是,如果我从App_Data中删除ASPNETDB.MDF,则在登录时会出现以下错误:

异常详细信息:System.Data.SqlClient.SqlException:一个或多个文件与数据库的主文件不匹配。如果您尝试附加数据库,请使用正确的文件重试该操作。如果这是现有数据库,则该文件可能已损坏,应该从备份中还原。
无法打开用户默认数据库。登录失败。
用户“ MyComputerName \ MyUserName”的登录失败。
日志文件'C:\ Users \ MyProjectName \ App_Data \ aspnetdb_log.ldf'与主文件不匹配。它可能来自其他数据库,或者日志可能先前已重建

一旦将ASPNETDB.MDF添加回App_Data,错误就会消失。

我已经搜索了解决方案中的所有代码,但没有引用ASPNETDB。那么为什么它仍然试图从中读取?

我正在.NET 4.5上开发ASP.NET Web表单。

最佳答案

即使使用Asp.Net Identity作为主要用户管理,也存在自动创建ASPNETDB.MDF的相同问题。

我通过从web.config中删除以下行来解决它:

<roleManager enabled="true" />


这一内容告诉ASP.NET使用较旧的ASP.NET成员资格用户管理,而ASP.NET Identity不支持该用户管理。

09-25 19:29