Членство в Asp.Net за запрос на изменение имени приложения - PullRequest
1 голос
/ 24 ноября 2011

У нас есть одно приложение, которое запускается из одной БД, но имеет несколько доменов, указывающих на него и в зависимости от домена определяет, какой CSS мы загружаем и какие данные клиентов отображаются.Все работает нормально, за исключением того, что я хотел бы менять имя приложения поставщика SqlMembership для каждого запроса в зависимости от того, какой клиент должен гарантировать отсутствие конфликтов между именами пользователей / электронными письмами в поставщике членства.

Так что, если домен - abc123.com Я хочу изменить ApplicationName только для этого запроса.К сожалению, членство является статическим для каждого приложения, поэтому мой вопрос заключается в том, как мне поступить.В идеале я хотел бы просто создать SqlMembershipProvider, RoleProvider, ProfileProvider на базовом контроллере из того, что находится в web.config, и изменить только имя приложения в начале запроса, не влияя на другие запросы.

Любые предложения будут с благодарностью.

Большое спасибо

РЕДАКТИРОВАТЬ:

ОК, в данный момент я пытаюсь это сделать, у меня есть базовый контроллери в рамках переопределения для OnActionExecuting я создаю SqlMembershipProvider и вызываю Initialize с NameValueCollection, содержащим все необходимые мне свойства, и изменяю ApplicationName в зависимости от клиента (который известен по URL).

Кто-нибудь видит какие-либопроблемы с этим?

РЕДАКТИРОВАТЬ: Нет, это тоже не работает, он все еще пытается загрузить форму web.config с определенными методами, так что ValidateUser работает, но CreateUser выдает исключение, поскольку он не можетнайдите запись в файле web.config.

1 Ответ

0 голосов
/ 24 ноября 2011

Вы должны быть в состоянии сделать это в корне web.config.Добавьте атрибут имени приложения к узлам, где вы определяете разных поставщиков.Просто убедитесь, что вы используете разные имена для каждого приложения.

add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="YourAppName" />
...