为什么我有这个RoleProvider问题?

时间:2010-08-09 13:41:40

标签: membership shared roleprovider

我目前有2个简单的ASP .Net应用程序。两个应用程序共享相同的aspnetdb成员资格数据库,用于成员资格,角色和提供程序以及相同的加密和解密密钥。它们在IIS中也有单独的网站和单独的应用程序池。

我遇到的问题是,尽管两个应用程序都有一个具有不同应用程序名称的角色提供程序,但它们都在第二个应用程序启动后注册并使用第二个应用程序中的角色提供程序。

两个应用程序在默认页面上都有以下代码块:

<p>
Current role provider details: <%= Roles.Provider.Name +", "+ Roles.Provider.ApplicationName %>
</p>

应用程序1在其web.config中包含以下roleprovider块:

<roleManager 
enabled="true" 
defaultProvider="AspNetSqlRoleProviderWebApp1" 
cacheRolesInCookie="true" 
domain="Sample Web Application 1" 
cookiePath="path1.domain.co.uk"
>
<providers>
<add 
connectionStringName="aspnetdbConnection" 
applicationName="Sample Web Application 1" 
description="AspNetSqlRoleProviderWebApp1" 
name="AspNetSqlRoleProviderWebApp1" 
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
/>
</providers>
</roleManager>

应用程序2在其web.config中具有以下类似的角色提供程序语句:

<roleManager 
    enabled="true" 
    defaultProvider="AspNetSqlRoleProviderWebApp2" 
    cacheRolesInCookie="true" 
    domain="Sample Web Application 2" 
    cookiePath="path2.domain.co.uk"
    >
    <providers>
    <add 
    connectionStringName="aspnetdbConnection" 
    applicationName="Sample Web Application 2" 
    description="AspNetSqlRoleProviderWebApp2" 
    name="AspNetSqlRoleProviderWebApp2" 
    type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
    />
    </providers>
    </roleManager>

我遇到的问题是,当我显示示例应用程序1时,我得到了

  

当前角色提供程序详细信息:   AspNetSqlRoleProviderWebApp1,示例   Web应用程序2

当我查看示例应用程序2时,我得到了

  

当前角色提供程序详细信息:   AspNetSqlRoleProviderWebApp2,示例   Web应用程序2

由于这些是完全独立的Web应用程序,为什么第一个应用程序中的“应用程序名称”出现在第一个应用程序中?

就我所见,唯一常见的是数据库共享相同的aspnetdb数据库以及应用程序名称为“/”的相同成员资格提供程序设置,以便在应用程序之间共享用户。

1 个答案:

答案 0 :(得分:0)

read here为了能够使用多个角色提供者,有必要进行一些修改。我希望这会对你有所帮助。