Asp.net 使用自定义(我自己的)RoleProvider的Windows身份验证在IIS上不起作用

Asp.net 使用自定义(我自己的)RoleProvider的Windows身份验证在IIS上不起作用,asp.net,iis,asp.net-membership,roleprovider,Asp.net,Iis,Asp.net Membership,Roleprovider,我尝试实现自己的角色Provider: public class MyRoleManger : RoleProvider { public override bool IsUserInRole(string username, string roleName) { throw new NotImplementedException(); } public override string[] GetRolesForUser(string usern

我尝试实现自己的角色Provider:

public class MyRoleManger : RoleProvider
{
    public override bool IsUserInRole(string username, string roleName)
    {
        throw new NotImplementedException();
    }

    public override string[] GetRolesForUser(string username)
    {
        throw new NotImplementedException();
    }
    private string appName = "";
    public override string ApplicationName
    {
        get { return appName; }
        set { appName = value; }
    }
....
}
这是我的Web.config:

 <system.web>
       .....
        <roleManager defaultProvider="RoleManger" enabled="true" >
            <providers>
            <clear/>
                <add name="RoleManger" type="UserManager.Client.Web.MyRoleManger" applicationName="MyApp"/>
            </providers>
        </roleManager>

        <authentication mode="Windows"/>
        <identity impersonate="true"/>
    </system.web>

    <system.webServer >
        <security>
            <authorization >
                <clear/>
                <add accessType="Allow" roles="anyRole"/>
                <add accessType="Deny" users="?"/>
            </authorization>
        </security>
        ...
    </system.webServer >

但是IIS下的ASP.NET不调用MyRoleManager方法。而是尝试从Windows安全组AD获取任何角色。如何强制IIS将MyRoleManager与Windows身份验证一起使用?

您的角色提供程序实现应具有name属性。确保它设置正确,因为它与您的配置有关。Name属性是什么意思?MyRoleManager.Name属性?或者MyRoleManager.ApplicationName属性?RoleProvider的默认实现没有此属性。这可能很明显,但您如何获得角色?你是在使用Roles类还是user.IsInRole?我是说应用程序名。“Name”属性位于ProviderBase上有类似的问题,但该问题在AuthenticateRequest事件中手动解决。我能否仅使用web.config和MyRoleManager来避免此代码?您的角色提供程序实现应该具有name属性。确保它设置正确,因为它与您的配置有关。Name属性是什么意思?MyRoleManager.Name属性?或者MyRoleManager.ApplicationName属性?RoleProvider的默认实现没有此属性。这可能很明显,但您如何获得角色?你是在使用Roles类还是user.IsInRole?我是说应用程序名。“Name”属性位于ProviderBase上有类似的问题,但该问题在AuthenticateRequest事件中手动解决。我能否仅使用web.config和MyRoleManager避免此代码?