我有一个使用会员功能的 ASP.Net 网络表单应用程序。我已经在远程服务器上使用 aspnet_regsql.exe 工具创建了所需的数据库。现在,如果我使用网站管理工具来定义角色,我会遇到以下情况:
- 我可以看到我以编程方式创建的用户 (Membership.CreateUser(...))
- 我可以定义新角色并将它们存储在某个地方
- 我无法将用户分配给角色(错误:“未找到用户 X”)。当我检查远程成员数据库时,角色表是空的。
我已经调查了这个问题,似乎角色被存储在App_Data 文件夹中本地计算机上的 *mdf 数据库文件中。这可能是因为该工具使用 machine.config 文件和 web.config 文件。
我的网络配置如下所示:
<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>
你可以看到我正在使用 2 个不同的连接字符串(一个用于用户存储,一个用于其余)。但是,两者都引用同一服务器上的同一数据库。我也尝试只使用“securityConnectionString”,但在这里没有成功(然后,该工具甚至找不到用户)。
那么...有人知道我如何使该工具(和我的应用程序)为所有会员目的使用相同的远程数据库吗?