更改了成员资格数据库的名称,找不到用户

时间:2012-02-17 15:29:39

标签: asp.net asp.net-membership

我使用VS 2008创建了一个asp.net站点。我在app_data中使用db来获取成员资格。我正在将其移动到新服务器,并且数据库将附加到sql server 2008 R2实例。我想更改数据库名称,以便与服务器的其余部分更好地匹配。由于我将名称从ASPNETDB.mdf更改为Reporting.MDF,我无法登录,ASP.NET表示我没有用户。我在VS中使用了重命名功能并更新了我的连接字符串。

<connectionStrings>
    <add name="MembershipConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Reporting.MDF;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
    <!--added to create new membership to connect to-->
<roleManager enabled="true">
  <providers>
    <clear/>
    <add connectionStringName="MembershipConnectionString" applicationName="WebSite2" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken="/>
  </providers>
</roleManager>
<membership defaultProvider="SqlMembershipProvider">
<providers>
 <clear/>
<add connectionStringName="MembershipConnectionString" enablePasswordRetrieval="false"
 enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="WebSite2"
 requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5"
 minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1"
 passwordAttemptWindow="10" passwordStrengthRegularExpression=""
 name="SqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" />
</providers>
</membership>

用户:0 提供者:测试以检查数据库工作正常。

编辑:我删除了publicKey,以防它以某种方式绑定到我身上。

编辑:我将名称更改回aspnetdb,但仍然无效。

如果我删除会员代码,它会再次运作。这是在将名称更改回aspnetdb之后。我回到了我开始的地方。

3 个答案:

答案 0 :(得分:2)

如果您再次遇到此问题,可能是由于忘记在applicationName中正确设置web.config属性而导致的。这是一个great, detailed explanation of the common problem。如果您将问题中的web.config文件与答案中的web.config进行比较,您会看到applicationName属性在这两个文件中有不同的值; WebSite2/

答案 1 :(得分:0)

我通过打开machine.config并复制所有成员资格细节来修复此问题。然后使用
     明确 在每个部分。

<connectionStrings>
<add name="LocalSqlServer2" connectionString="Data Source=Johnny;Initial Catalog=aspnetdb;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
    <!--added to create new membership to connect to-->
  <membership>
    <providers>
      <clear/>
      <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=" connectionStringName="LocalSqlServer2" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
    </providers>
  </membership>
  <profile>
    <providers>
      <clear/>
      <add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer2" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken="/>
    </providers>
  </profile>
  <roleManager>
    <providers>
      <clear/>
      <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer2" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken="/>
      <add name="AspNetWindowsTokenRoleProvider" applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken="/>
    </providers>
  </roleManager>

答案 2 :(得分:0)

首先尝试附加aspnetdb数据库。然后使用Sql Management Studio重命名它。