Почему имя приложения не устанавливается для моего поставщика пользовательских ролей?
Я реализовал пользовательский поставщик ролей для приложения 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"];