0

我目前有 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 数据库以及应用程序名称“/”的相同成员资格提供程序设置,以便在应用程序之间共享用户。

4

1 回答 1

0

在这里读到,为了能够使用多个角色提供者,有必要进行一些修改。我希望这能帮到您。

于 2010-08-09T14:07:14.183 回答