Есть ли способ отключить поставщика членства ASP.Net от использования web.config?
В настоящее время он хранит строку подключения и sqlMembershipProvider в файле web.config, который находится не там, где мне хотелось бы.
Спасибо
Есть ли способ отключить поставщика членства ASP.Net от использования web.config?
В настоящее время он хранит строку подключения и sqlMembershipProvider в файле web.config, который находится не там, где мне хотелось бы.
Спасибо
Обычно вы можете использовать поставщика сразу после вызова его конструктора по умолчанию и вызвать для него Initialize
. Однако невозможно использовать абстракцию System.Web.Security.Membership
без web.config, потому что класс Membership
жестко привязан к файлу конфигурации. При использовании класса Membership
он будет создавать экземпляры типов, которые вы настроили в файле конфигурации.
Как я уже сказал, если вы не хотите настраивать его в файле конфигурации, вы можете создать его в коде. Это был бы хороший подход, особенно когда у вас есть собственная структура IoC (вы можете рассматривать фасад Membership
как реализацию IoC только для типов, производных от MembershipProvider
). Вот пример того, как создать SqlMembershipProvider
:
var configuration = new NameValueCollection();
configuration.Add("name", "SqlProvider");
configuration.Add("connectionStringName", "SqlServices");
configuration.Add("applicationName", "MyApplication");
configuration.Add("enablePasswordRetrieval", "false");
configuration.Add("enablePasswordReset", "true");
configuration.Add("requiresQuestionAndAnswer", "true");
configuration.Add("requiresUniqueEmail", "false");
configuration.Add("passwordFormat", "Hashed");
configuration.Add("maxInvalidPasswordAttempts", "5");
configuration.Add("passwordAttemptWindow", "10");
var provider = new SqlMembershipProvider();
provider.Initialize("SqlProvider", configuration);
// And here store it in a static field or register it with your
// favorite IoC container.
container.RegisterSingle<MembershipProvider>(provider);
Удачи.
SqlMembershipProvider
без файла конфигурации xml. Совет: декомпилируйте SqlMembershipProvider
исходный код в Reflector или связанном с ним инструменте и скопируйте этот код в свой собственный проект.
- person Steven; 27.08.2013
Сантехника поставщика управляется конфигурацией.
В зависимости от вашего уровня опыта вы можете использовать своих собственных провайдеров, которые инициализируются другими способами, но это определенно нетривиальная задача и чревата тонкими ловушками, которые обнаруживаются в самые неподходящие моменты, например, когда ваш босс входит в систему. и его сетевой пароль просочился.
Попытка программно инициализировать внутренних провайдеров будет разочарованием.
Это могло бы помочь, если бы вы объяснили, почему вам не нравится использовать файл конфигурации для, ммм, конфигурации?