ASP.NET 身份正在 App_Data 请求本地数据库

ASP.NET identity is asking for local DB at App_Data

我遇到了错误 asking for the App_Data local db,但是我没有在我的项目中使用本地数据库,而是在服务器上使用在线数据库。

以下是我创建网站的步骤:

1- 新 ASP.Net Web 应用程序 -> MVC – 个人用户身份验证

2- 运行 应用程序,并注册一个新用户 (这就是我认为问题开始的地方)——因为在这一点上,它在 App_Data

处创建了一个本地数据库

3- 使用 SQL Server Management Studio 创建 SQL Server 2017 数据库并添加我的表

4- 将数据库作为 ADO.Net 实体数据模型 -> 从数据库导入 EF 设计器 (使用新的 connectionString)

5- 将 DefaultConnection 更新为 link 到新的数据库

6- 运行 项目并注册新用户(在新数据库中创建的身份表) 我没有将身份表导入 ADO.Net 实体数据模型

7- 在 smarterasp.net

在线上传数据库

8- 将 connectionStrings 更新为新的在线数据库

9- 继续在网站上工作…

10- 发布网站 -> 它要求 App_Data 本地数据库作为附件!

项目中没有对任何本地数据库的引用。如何在不创建新应用程序的情况下修复此本地数据库问题。

    <connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=SQL5041.site4now.net;
                                                Initial Catalog=DB_Name;
                                                User Id=admin;
                                                Password=***;" 
     providerName="System.Data.SqlClient" />
<add name="RP" connectionString="metadata=res://*/RPDatabaseModel.csdl|res://*/RPDatabaseModel.ssdl|res://*/RPDatabaseModel.msl;
                                    provider=System.Data.SqlClient;
                                    provider connection string=&quot;Data Source=SQL5041.site4now.net;Initial Catalog=DB_Name;User Id=admin;Password=***; MultipleActiveResultSets=true;&quot;" 
     providerName="System.Data.EntityClient" />

尝试禁用您的 roleManager。在您的 web.config 中删除整个 roleManager 部分并将其替换为:

<roleManager enabled="false" />

有关更多信息,在您的 machine.config 中您可能有这样一行:

<add name="AspNetSqlRoleProvider"
    connectionStringName="LocalSqlServer" applicationName="/" type="..."/>

和这样的连接字符串:

<add name="LocalSqlServer" 
    connectionString="...localdb..." 
    providerName="System.Data.SqlClient"/>

So leaving the role manager entries in there make Asp.Net start looking in this local db before your IdentityDbContext. Removing the entries means it tries to fine an entry and fails. So the only solution is to disable it completely.