为什么没有为我的自定义角色提供程序设置应用程序名称?

ngr*_*oot 2 asp.net roleprovider

我已经为ASP.NET应用程序实现了一个自定义角色提供程序.我从System.Web.Security.RoleProvider派生了我的类,并实现了所有抽象方法和属性.我正在使用web.config中的applicationName配置我的提供程序,àla:

 <roleManager enabled="true" defaultProvider="CustomRoleProvider">
  <providers>
    <clear/>
    <add name="CustomRoleProvider" type="MvcApplication1.CustomRoleProvider" applicationName="Foo"/>
  </providers>
</roleManager>
Run Code Online (Sandbox Code Playgroud)

但是,我的提供程序的ApplicationName属性未相应设置.为什么?

ngr*_*oot 7

除了从System.Web.Security.RoleProvider实现抽象方法之外,还需要覆盖该Initialize()方法.web.config中的provider元素中未由System.Configuration.ProviderSettings处理的属性(如applicationName)将通过传递给自定义角色提供程序Initialize().将以下内容添加到您的实现中Initialize()会将自定义角色提供程序的ApplicationName属性设置为web.config中applicationName属性提供的值:

   if (config["applicationName"] != null)
       ApplicationName = config["applicationName"];
Run Code Online (Sandbox Code Playgroud)