首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何停止在LocalDB中使用ASPNETDB.MDF?

如何停止在LocalDB中使用ASPNETDB.MDF?
EN

Stack Overflow用户
提问于 2014-12-18 14:52:15
回答 4查看 2.2K关注 0票数 8

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

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

代码语言:javascript
复制
<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表单。

EN

回答 4

Stack Overflow用户

发布于 2016-09-06 13:19:38

我也遇到了同样的问题。我发现VS恼人地从machine.config获取配置设置,它位于项目之外,在我的例子中...

代码语言:javascript
复制
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config

Identity 2.0在machine.config中使用了以下连接字符串...

代码语言:javascript
复制
<connectionStrings>
    <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>

要为...设置连接,请执行以下操作

代码语言:javascript
复制
       <membership>
        <providers>
            <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, ........" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
        </providers>
    </membership>

。。(也是在machine.config中设置的)。如果你还没有使用会员制,那么可以按照尼克勋爵的建议去做(除了那些明确的/将会做这项工作的人),然后在web.config中简单地做以下事情……

代码语言:javascript
复制
<connectionStrings>
   <clear/>
   <add name="DefaultConnection" connectionString="whatever" providerName="System.Data.SqlClient" />

但是,如果您像我一样,以前有成员运行(https://msdn.microsoft.com/en-us/library/6e9y4s5t(v=vs.100).aspx,您将需要从machine.config中注释掉或删除以下部分...

代码语言:javascript
复制
<!--
    <membership>
        <providers>
        ...
        </providers>
    </membership>

    <profile>
        <providers>
         ...
        </providers>
    </profile>

    <roleManager>
        <providers>
        ..
        </providers>
    </roleManager>
-->

..。因为AspNet Identity 2不再需要所有这些东西。

我还必须在我的web.config中添加以下内容:

代码语言:javascript
复制
<modules>
 <remove name="RoleManager"/>
</modules>

..。根据这个答案:Default Role Provider could not be found on IIS 7 running .NET 4

我希望我为某人节省了一些时间。这花了我好几个小时才弄明白。

票数 3
EN

Stack Overflow用户

发布于 2015-09-16 02:53:17

我在自动创建ASPNETDB.MDF时遇到了同样的问题,即使我使用Asp.Net Identity作为主要用户管理。

我通过从web.config中删除以下代码行解决了这个问题:

代码语言:javascript
复制
<roleManager enabled="true" />

这个命令告诉ASP.NET使用旧的ASP.NET成员用户管理,这是ASP.NET Identity不支持的。

票数 2
EN

Stack Overflow用户

发布于 2014-12-18 15:04:25

看起来你的web.config里有像这样的东西

代码语言:javascript
复制
<add name="DefaultConnectionForLocalDb" connectionString="Data Source=(LocalDb)\v11.0;..."; />

在您的AccountModels.cs文件中,您拥有:

代码语言:javascript
复制
public class UsersContext : DbContext
{
    public UsersContext()
        : base("DefaultConnectionForLocalDb")
    {
    }
}

但是,应该是这样的:

代码语言:javascript
复制
<add name="DefaultConnectionForSQLEXPRESS" connectionString="data source=.\SQLEXPRESS;...;" />

public class UsersContext : DbContext
{
    public UsersContext()
        : base("DefaultConnectionForSQLEXPRESS")
    {
    }
}

然后,您可以安全地从web.config中删除DefaultConnectionForLocalDb条目,并将ASPNETDB.MDFApp_Data中删除。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27540744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档