На странице MSDN для свойства Membership.ApplicationName
(которое применяется к поставщику членства asp.net), он предупреждает, что, хотя можно изменить Membership.ApplicationName
в коде, «свойство ApplicationName не является Потокобезопасен для нескольких записей, а изменение значения свойства ApplicationName может привести к неожиданному поведению для нескольких пользователей приложения. ' Поэтому они рекомендуют избегать использования его для «веб-приложения».
Это потому, что значение по умолчанию SqlMembershipProvider
написано как одиночный. Но вот мой вопрос: нормально ли, если все потоки в моем процессе приложения будут устанавливать Membership.ApplicationName
в то же самое ?
Я подумываю о том, чтобы на моем компьютере IIS было несколько приложений, у каждого из которых был свой отдельный пул приложений. Я хочу указать им одно и то же местоположение, но в зависимости от имени хоста установить провайдер приложения на разные вещи. Разве это не будет на самом деле хорошо? Это может быть не поточно-ориентированная операция, но разве у каждого пула приложений нет собственного процесса и, следовательно, собственного экземпляра SqlMembershipProvider
? Таким образом, каждый поток, который пытался установить Membership.ApplicationName
для данного экземпляра SqlMembershipProvider
, будет пытаться установить для него одно и то же (поставщик, который подходит для этого имени хоста). Или я что-то упустил?
Полагаю, главный вопрос в том, разделяют ли ВСЕ приложения asp.net один SqlMembershipProvider
или для каждого процесса пула приложений создается отдельное?