首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >成员资格的ASP.NET配置网站-数据库设置(aspnet_表)-指向正确的数据库有问题

问成员资格的ASP.NET配置网站-数据库设置(aspnet_表)-指向正确的数据库有问题
EN

Stack Overflow用户
提问于 2013-04-04 21:29:44
回答 4查看 4.9K关注 0票数 1

我正在设置我的ASP.NET MVC4应用程序的成员资格,所以我打开解决方案,然后在“项目”菜单下打开ASP.NET配置网站选项。这将打开ASP.NET配置工具来创建/修改/删除用户。我所发现的是,当我创建一个用户时,它在本地数据库中创建用户,当我在web.config中专门设置指向与我的网络托管公司托管的不同数据库时。我使用<remove name="LocalSqlServer" />来删除machine.config中定义的连接。

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

代码语言:javascript
复制
<remove name="LocalSqlServer" />
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=cp.speedwell.arvixe.com; Initial Catalog=*********; User ID=********; Password=********;" />

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

​

​

当我在ASP.NET Configuration选项卡中单击"Providers“时,下面是我的提供者列表:

​

​

DefaultMembershipProvider被指向"DefaultConnection“,这是与我的网站托管公司托管的数据库的连接字符串。当我单击“测试”时,它立即返回:

​

​

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

​

​

知道我做错什么了吗?

更新

以下是我的会员资格、个人资料、RoleManager和SessionState的web.config部分:

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

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-05 02:22:35

结果,我的用户/角色/Etc实际上一直被插入到正确的数据库中--它们被插入到User表中,而不是像我预期的那样插入到aspnet_Users表中。这是因为我的应用程序被配置为使用asp.net通用提供程序。

由于我正在使用MYWSAT,而且它需要旧的aspnet表,所以我删除了通用提供程序,现在它已经解决了这个问题。我之所以收到这条消息说它无法建立到数据库的连接正是因为这一点。

票数 0
EN

Stack Overflow用户

发布于 2013-05-29 11:26:57

在你的Web.config里,把这个换掉,

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

用这个,

代码语言:javascript
复制
<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>
票数 2
EN

Stack Overflow用户

发布于 2013-04-05 02:22:49

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

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

此外,如果使用新的ASP.Net通用提供商,则不需要使用aspnet_regsql.exe来生成不推荐的表。

ASP.Net Universal Providers使用实体框架。

如果您的数据库是新的(没有现有数据),我的建议是删除该数据库并使用ASP.Net通用提供程序创建表(不需要使用aspnet_regsql.exe)。

将<clear/>放在add之前。

代码语言:javascript
复制
<profile defaultProvider="DefaultProfileProvider">
  <providers>
    <clear/>
    <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>
    <clear/>
    <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>
    <clear/>
    <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>
    <clear/>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
  </providers>
</sessionState>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15822088

复制
相关文章

相似问题

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