How do I stop using ASPNETDB.MDF in LocalDB?

后端 未结 4 2026
小鲜肉
小鲜肉 2021-01-12 04:26

I implemented ASP.NET Identity and it automatically created ASPNETDB.MDF and aspnetdb_log.ldf in my App_Data folder. I already have the AspNet tables (i.e., AspNetRoles, Asp

相关标签:
4条回答
  • 2021-01-12 04:33

    It seems you have something like in your web.config

    <add name="DefaultConnectionForLocalDb" connectionString="Data Source=(LocalDb)\v11.0;..."; />
    

    In your AccountModels.cs file, you have:

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

    However it should be this way:

    <add name="DefaultConnectionForSQLEXPRESS" connectionString="data source=.\SQLEXPRESS;...;" />
    
    public class UsersContext : DbContext
    {
        public UsersContext()
            : base("DefaultConnectionForSQLEXPRESS")
        {
        }
    }
    

    Then you can remove safely DefaultConnectionForLocalDb entry from your web.config and ASPNETDB.MDF from to App_Data.

    0 讨论(0)
  • 2021-01-12 04:38

    I had the same Problem where the ASPNETDB.MDF was automatically created, even if I use Asp.Net Identity as the main user management.

    I solved it by removing the following line from web.config:

    <roleManager enabled="true" />
    

    This one tells ASP.NET to use the older ASP.NET Membership user management, which is not supported by ASP.NET Identity.

    0 讨论(0)
  • 2021-01-12 04:42

    I was getting exactly the same problem. I discovered that VS annoyingly pulls in config settings from machine.config, which lives outside of the project, in my case in...

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
    

    Identity 2.0 had used the following connection string inside machine.config...

    <connectionStrings>
        <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
    </connectionStrings>
    

    to set up a connection for...

           <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>
    

    .. (which was also set in machine.config). If you haven't been using Membership then it's fine to do as Lord nick suggests (except just the clear/ will do the job) and simply do the following in web.config...

    <connectionStrings>
       <clear/>
       <add name="DefaultConnection" connectionString="whatever" providerName="System.Data.SqlClient" />
    

    However, if you, like me, previously had Membership running (https://msdn.microsoft.com/en-us/library/6e9y4s5t(v=vs.100).aspx), you will need to comment out or delete the following sections from machine.config...

    <!--
        <membership>
            <providers>
            ...
            </providers>
        </membership>
    
        <profile>
            <providers>
             ...
            </providers>
        </profile>
    
        <roleManager>
            <providers>
            ..
            </providers>
        </roleManager>
    -->
    

    ... since all this stuff is no longer needed for AspNet Identity 2.

    I also had to add the following into in my web.config:

    <modules>
     <remove name="RoleManager"/>
    </modules>
    

    ... as per this answer: Default Role Provider could not be found on IIS 7 running .NET 4

    I hope I've saved someone some time. This took me hours and hours to work out.

    0 讨论(0)
  • 2021-01-12 04:46

    I don't know if you've figured this out or not but one of the things you can try is: in web.config, connections section, add <Clear/> and then <Remove Name=LocalSqlServer/>

    Apparently if you don't change/remove the LocalSqlServe will still try to connect to the aspnetdb.mdf.

    You might also think about adding back in the LocalSqlServer and having it point to your SqlExpress or SqlServer.

    0 讨论(0)
提交回复
热议问题