В настоящее время у меня есть 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, а также одну и ту же настройку поставщика членства для имени приложения '/', чтобы делить пользователей между приложениями.