2

我已经为 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>

但是,我的提供者的 ApplicationName 属性没有被相应地设置。为什么?

4

1 回答 1

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"];
于 2012-06-12T16:23:18.140 回答