Почему у меня эта проблема с RoleProvider?

В настоящее время у меня есть 2 простых приложения ASP .Net. Оба приложения совместно используют одну и ту же базу данных членства aspnetdb для членства, ролей и поставщиков, а также одни и те же ключи шифрования и дешифрования. У них также есть отдельные веб-сайты и отдельные пулы приложений в IIS.

У меня проблема в том, что, несмотря на то, что оба приложения имеют поставщика ролей с разными именами приложений, они оба регистрируются и используют поставщик ролей из второго приложения после запуска второго приложения.

Оба приложения имеют следующий блок кода на странице по умолчанию:

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

Приложение 1 имеет следующий блок roleprovider в своем файле web.config:

<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, Образец веб-приложения 2

И когда я просматриваю пример приложения 2, я получаю

Сведения о текущем поставщике ролей: AspNetSqlRoleProviderWebApp2, образец веб-приложения 2

Поскольку это полностью отдельные веб-приложения, почему "имя приложения" из второго приложения отображается в первом?

Насколько я могу видеть, единственное, что часто встречается, это то, что база данных совместно использует одну и ту же базу данных aspnetdb, а также одну и ту же настройку поставщика членства для имени приложения '/', чтобы делить пользователей между приложениями.

1 ответ

Я прочитал здесь, что было необходимо внести некоторые изменения, чтобы иметь возможность использовать несколько поставщиков ролей. Я надеюсь, что это поможет вам.

Другие вопросы по тегам