Asp.net mvc ASP.NET成员资格配置网站-数据库设置(aspnet_uuuu表)-指向正确的数据库时出现问题

Asp.net mvc ASP.NET成员资格配置网站-数据库设置(aspnet_uuuu表)-指向正确的数据库时出现问题,asp.net-mvc,asp.net-mvc-4,asp.net-membership,membership,Asp.net Mvc,Asp.net Mvc 4,Asp.net Membership,Membership,我正在ASP.NET MVC4应用程序中设置成员身份,因此我打开解决方案,然后从那里打开“项目”菜单下的ASP.NET配置网站选项。这将打开ASP.NET配置工具以创建/修改/删除用户。我发现,当我创建一个用户时,它会在本地数据库中创建该用户,当我在web.config中专门设置指向由我的web托管公司托管的另一个数据库时。我放置以删除machine.config中定义的连接 以下是我的应用程序的web.config中的连接字符串: <remove name="LocalSqlServer

我正在ASP.NET MVC4应用程序中设置成员身份,因此我打开解决方案,然后从那里打开“项目”菜单下的ASP.NET配置网站选项。这将打开ASP.NET配置工具以创建/修改/删除用户。我发现,当我创建一个用户时,它会在本地数据库中创建该用户,当我在web.config中专门设置指向由我的web托管公司托管的另一个数据库时。我放置
以删除machine.config中定义的连接

以下是我的应用程序的web.config中的连接字符串:

<remove name="LocalSqlServer" />
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=cp.speedwell.arvixe.com; Initial Catalog=*********; User ID=********; Password=********;" />

这是我的数据库结构,与我的网络托管公司。如您所见,我已经创建了所有aspnet_uuu表:

当我单击ASP.NET配置选项卡中的“提供程序”时,以下是我的提供程序列表:

DefaultMembershipProvider指向“DefaultConnection”,这是指向我的web托管公司托管的数据库的连接字符串。当我单击“测试”时,它会立即返回并显示:

最后,当我单击安全性时,我得到的消息如下(请记住,我从连接字符串中删除了LocalSqlServer):

知道我做错了什么吗

更新

以下是我的web.config的成员资格、个人资料、角色管理器和会话状态部分:

<profile defaultProvider="DefaultProfileProvider">
  <providers>
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add connectionStringName="DefaultConnection" enablePasswordRetrieval="false"
      enablePasswordReset="true" requiresQuestionAndAnswer="false"
      requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6"
      minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
      applicationName="/" name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
  <providers>
    <add connectionStringName="DefaultConnection" applicationName="/"
      name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</roleManager>
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
  </providers>
</sessionState>

您的web.config是否通过connectionStringName指向成员身份的连接字符串,如下所示:

<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="NameOfConnectionString" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />

或者您可能存在生成配置问题?您是否已验证上载的配置文件是否指向正确的位置

另外,请尝试在您的会员声明之前添加一个明确的提示:

<membership defaultProvider="DefaultMembershipProvider">
<providers>
 <clear />    
<add name="DefaultMembershipProvider" ...


事实证明,我的用户/角色/Etc实际上一直都被插入到正确的数据库中——他们被插入到了Users表中,而不是我所期望的aspnet_Users表中。这是因为我的应用程序配置为使用asp.net通用提供程序


因为我使用的是MYWSAT,它需要旧的aspnet表,所以我删除了universal providers,现在已经解决了这个问题。我收到消息说它无法与数据库建立连接的原因正是因为此。

您不需要删除LocalSqlServer,而是需要删除DefaultConnection

<remove name="DefaultConnection" />
<add name="DefaultConnection" providerName="System.Data.SqlClient" .../>
在Web.config中, 把这个换掉,

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>

有了这个,

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>


你说的“上传的配置文件”是什么意思?我现在在本地运行它,指向web.config中的一个非本地数据库。你有构建配置/配置转换吗?是的,那没有帮助。。它刚刚清除了从machine.config.dam继承的设置。这是一个艰难的过程。很抱歉,到目前为止我还没能帮上忙。我建议看一下线程,看看它是否有用。不,这不起作用。。。我的意思是,删除LocalSqlServer并将我的连接字符串重命名为LocalSqlServer使数据库连接得以成功进行,但现在我不知道我的用户存储在哪里,因为它不在我想要的数据库中。你能发布成员资格、角色管理器、配置文件和会话状态(如果有)吗web.config的标记?我在结尾用您请求的信息更新了我的问题,@win当我单击“安全”选项卡时,我收到消息“在应用程序配置中找不到连接名'LocalSqlServer',或者连接字符串为空。(C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config第251行)你说的是表用户、角色、应用程序等,对吗?与aspnet表格相反?是的。aspnet_XXX已弃用。由新的ASP.Net通用提供程序创建的表没有aspnet_前缀。您不需要sessionState,因为它是默认的
InProc
。它只是一个安全网。你不必使用它。
<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>