为什么我的 MVC 5 应用程序试图访问本地数据库
Why is my MVC 5 application trying to access Local DB
我一直在我的本地机器上开发 MVC 5 应用程序,并且刚刚尝试 public Azure 的测试版本,我发现了这个新错误。我的连接字符串没有引用 LocalDB,而且我在我的代码中找不到任何要创建或访问 LocalDB 的内容。然而,我收到与尝试 create/access localDB:
有关的错误
The connection string specifies a local Sql Server Express instance using a database location within the application's App_Data directory
本来项目是有forms认证的,后来改成AspNetIdentity框架。我担心我从带有表单身份验证的初始模板中得到了一些残留物,尽管对应用程序进行了多次梳理并在谷歌上进行了长时间的搜索,但我还是找不到这些残留物。
这是连接字符串。没有其他人。至少在 Visual studio 中使用查找函数来查找 "connectionString" - 这就是全部:
<add name="elmah" connectionString="Data Source=tcp:xxxxx.database.windows.net,1433;Initial Catalog=xxxxx;User ID=xxxxx@xxxxx;Password=xxxxx" providerName="System.Data.SqlClient" />
<add name="IdentityDbContext" connectionString="Data Source=tcp:xxxxx.database.windows.net,1433;Initial Catalog=xxxxx;User ID=xxxxx@xxxxx;Password=xxxxx" providerName="System.Data.SqlClient" />
<add name="ORLODbContext" connectionString="metadata=res://*/ORLODbContext.csdl|res://*/ORLODbContext.ssdl|res://*/ORLODbContext.msl;provider=System.Data.SqlClient;provider connection string="Data Source=tcp:xxxxx.database.windows.net,1433;Initial Catalog=xxxxx;User ID=xxxxx@xxxxx;Password=xxxxx"" providerName="System.Data.EntityClient" />
我的谷歌搜索让我将这些其他功能添加到 web.config。在 system.web
:
<authentication mode="None" />
<membership>
<providers>
<clear />
</providers>
</membership>
<profile>
<providers>
<clear />
</providers>
</profile>
在这里,我的谷歌搜索还建议我应该添加:
<roleManager>
<providers>
<clear />
</providers>
</roleManager>
但是如果我这样做,我会收到错误消息:
Default Role Provider could not be found.
看样子我不要了,看来,我想也许我不需要这一点。但是,如果我错了,请纠正我。
还有什么我应该看的吗?
Asp.Net 默认情况下使用角色管理器,即使在使用 Identity 时也是如此。解决方案是完全禁用它。在您的 web.config
中删除整个 roleManager
部分并将其替换为:
<roleManager enabled="false" />
有关更多信息,在您的 machine.config
中您可能有这样一行:
<add name="AspNetSqlRoleProvider"
connectionStringName="LocalSqlServer" applicationName="/" type="..."/>
和这样的连接字符串:
<add name="LocalSqlServer"
connectionString="...localdb..."
providerName="System.Data.SqlClient"/>
因此,将角色管理器条目留在此处会使 Asp.Net 在 IdentityDbContext
之前开始查找此本地数据库。删除条目意味着它会尝试对条目进行罚款并失败。所以唯一的解决办法就是完全禁用它。
我一直在我的本地机器上开发 MVC 5 应用程序,并且刚刚尝试 public Azure 的测试版本,我发现了这个新错误。我的连接字符串没有引用 LocalDB,而且我在我的代码中找不到任何要创建或访问 LocalDB 的内容。然而,我收到与尝试 create/access localDB:
有关的错误The connection string specifies a local Sql Server Express instance using a database location within the application's App_Data directory
本来项目是有forms认证的,后来改成AspNetIdentity框架。我担心我从带有表单身份验证的初始模板中得到了一些残留物,尽管对应用程序进行了多次梳理并在谷歌上进行了长时间的搜索,但我还是找不到这些残留物。
这是连接字符串。没有其他人。至少在 Visual studio 中使用查找函数来查找 "connectionString" - 这就是全部:
<add name="elmah" connectionString="Data Source=tcp:xxxxx.database.windows.net,1433;Initial Catalog=xxxxx;User ID=xxxxx@xxxxx;Password=xxxxx" providerName="System.Data.SqlClient" />
<add name="IdentityDbContext" connectionString="Data Source=tcp:xxxxx.database.windows.net,1433;Initial Catalog=xxxxx;User ID=xxxxx@xxxxx;Password=xxxxx" providerName="System.Data.SqlClient" />
<add name="ORLODbContext" connectionString="metadata=res://*/ORLODbContext.csdl|res://*/ORLODbContext.ssdl|res://*/ORLODbContext.msl;provider=System.Data.SqlClient;provider connection string="Data Source=tcp:xxxxx.database.windows.net,1433;Initial Catalog=xxxxx;User ID=xxxxx@xxxxx;Password=xxxxx"" providerName="System.Data.EntityClient" />
我的谷歌搜索让我将这些其他功能添加到 web.config。在 system.web
:
<authentication mode="None" />
<membership>
<providers>
<clear />
</providers>
</membership>
<profile>
<providers>
<clear />
</providers>
</profile>
在这里,我的谷歌搜索还建议我应该添加:
<roleManager>
<providers>
<clear />
</providers>
</roleManager>
但是如果我这样做,我会收到错误消息:
Default Role Provider could not be found.
看样子我不要了,看来,我想也许我不需要这一点。但是,如果我错了,请纠正我。
还有什么我应该看的吗?
Asp.Net 默认情况下使用角色管理器,即使在使用 Identity 时也是如此。解决方案是完全禁用它。在您的 web.config
中删除整个 roleManager
部分并将其替换为:
<roleManager enabled="false" />
有关更多信息,在您的 machine.config
中您可能有这样一行:
<add name="AspNetSqlRoleProvider"
connectionStringName="LocalSqlServer" applicationName="/" type="..."/>
和这样的连接字符串:
<add name="LocalSqlServer"
connectionString="...localdb..."
providerName="System.Data.SqlClient"/>
因此,将角色管理器条目留在此处会使 Asp.Net 在 IdentityDbContext
之前开始查找此本地数据库。删除条目意味着它会尝试对条目进行罚款并失败。所以唯一的解决办法就是完全禁用它。