我有一个使用会员功能的ASP.Net网络表单应用程序。 我使用远程服务器上的aspnet_regsql.exe工具创建了所需的数据库。 现在,如果我使用网站管理工具来定义角色,我会遇到以下情况:
我调查了这个问题,似乎这些角色存储在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”,但这里没有成功(那时,该工具甚至找不到用户)。
所以...有没有人知道如何让这个工具(和我的应用程序)使用相同的远程数据库用于所有会员目的?
答案 0 :(得分:0)
您错过了匹配连接字符串。
请注意,会员标记的connectionStringName
为userManagementConnectionString
它可能会解决您的问题,如果您将其更改为securityConnectionString
- 与配置文件相同,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>