Asp.net网站管理工具使用错误的数据库
我有一个ASP.NETWebForms应用程序,它使用成员资格功能。 我已使用aspnet_regsql.exe工具在远程服务器上创建了所需的数据库。 现在,如果我使用网站管理工具来定义角色,我会经历以下事情:Asp.net网站管理工具使用错误的数据库,asp.net,asp.net-membership,Asp.net,Asp.net Membership,我有一个ASP.NETWebForms应用程序,它使用成员资格功能。 我已使用aspnet_regsql.exe工具在远程服务器上创建了所需的数据库。 现在,如果我使用网站管理工具来定义角色,我会经历以下事情: 我可以看到我通过编程创建的用户(Membership.CreateUser(…) 我可以定义新角色,并将它们存储在某个位置 我无法将用户分配给角色(错误:“未找到用户X”)。当我检查远程成员数据库时,roles表是空的 我已经调查了这个问题,似乎角色存储在App_Data文件夹中lo
- 我可以看到我通过编程创建的用户(Membership.CreateUser(…)
- 我可以定义新角色,并将它们存储在某个位置
- 我无法将用户分配给角色(错误:“未找到用户X”)。当我检查远程成员数据库时,roles表是空的
<connectionStrings>
<add name="userManagementConnectionString" connectionString="Data Source=myIp\SQLEXPRESS;Integrated Security=False;User ID=myUser;Password=myPW;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False"/>
<add name="securityConnectionString" connectionString="Data Source=myIp\SQLEXPRESS;Initial Catalog=IsapMemberShip;Integrated Security=False;User ID=myUser;Password=myPW;TrustServerCertificate=False" providerName="System.Data.SqlClient" />
</connectionStrings>
<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="securityConnectionString" applicationName="/" />
</providers>
</profile>
<membership defaultProvider="isapMembershipProvider">
<providers>
<add name="isapMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="userManagementConnectionString"
... </providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
<providers>
<add connectionStringName="securityConnectionString" 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="securityConnectionString" />
</providers>
</sessionState>
您缺少匹配连接字符串
请注意,成员身份标记的connectionStringName
是userManagementConnectionString
如果您将其更改为securityConnectionString
,它可能会解决您的问题-与profile、roleManager或sessionState相同。然后,您可以删除userManagementConnectionString
<profile defaultProvider="DefaultProfileProvider">
<providers>
<add ...connectionStringName="securityConnectionString"
applicationName="/" />
</providers>
</profile>
<membership defaultProvider="isapMembershipProvider">
<providers>
<add ... connectionStringName="userManagementConnectionString" ... />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
<providers>
<add connectionStringName="securityConnectionString"
applicationName="/" .../>
</providers>
</roleManager>
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
<providers>
<add ... connectionStringName="securityConnectionString" />
</providers>
</sessionState>
没有,我试过了,但没用。发生的情况如下:-我可以创建一个用户,然后将其添加到远程数据库-我可以创建一个新角色(该角色不是添加到远程数据库,而是添加到本地数据库)-我无法将角色分配给用户(给出一个找不到该用户的错误)。因此,基本问题似乎是该工具使用2个数据库;一个用于用户,一个用于角色。您的两个连接字符串不相同-一个显式定义数据库,另一个不显式定义数据库。删除一个连接字符串。下面是如何使用成员资格提供程序的说明-我现在只使用securityConnectionString。我还使用regsql工具重新创建了数据库。尽管如此,我仍然可以创建用户和角色,但我无法链接它们。App_数据文件夹中的本地数据库仍在使用中。我还在每个add*标记之前都添加了一个标记。您没有按照Scott Hanselman的指示操作。aspnet\u regsql
生成的成员资格已被弃用。谢谢,我终于让它工作了。使用1 connectionString有很大帮助。