Почему имя приложения не устанавливается для моего поставщика пользовательских ролей?

Я реализовал пользовательский поставщик ролей для приложения ASP.NET. Я извлек свой класс из System.Web.Security.RoleProvider и реализовал все абстрактные методы и свойства. Я настраиваю своего провайдера с помощью applicationName в web.config, а ля:

 <roleManager enabled="true" defaultProvider="CustomRoleProvider">
  <providers>
    <clear/>
    <add name="CustomRoleProvider" type="MvcApplication1.CustomRoleProvider" applicationName="Foo"/>
  </providers>
</roleManager>

Однако свойство ApplicationName моего провайдера не устанавливается соответствующим образом. Зачем?

1 ответ

В дополнение к реализации абстрактных методов из System.Web.Security.RoleProvider, вам также необходимо переопределить Initialize() метод. Атрибуты в элементе провайдера в web.config, которые не обрабатываются System.Configuration.ProviderSettings, например applicationName, передаются поставщику настраиваемой роли через Initialize(), Добавление следующего к вашей реализации Initialize() установит для свойства ApplicationName поставщика пользовательских ролей значение, указанное в атрибуте applicationName в файле web.config:

   if (config["applicationName"] != null)
       ApplicationName = config["applicationName"];
Другие вопросы по тегам