C# ASP.NET Windows角色提供程序(AspNetWindowsTokenRoleProvider)未注意到正在将用户添加到新组

C# ASP.NET Windows角色提供程序(AspNetWindowsTokenRoleProvider)未注意到正在将用户添加到新组,c#,asp.net,C#,Asp.net,我正在尝试创建一个应用程序,该应用程序使用规则来限制有权访问该应用程序的组。我正在使用用于ASP.NET的Windows身份验证和Windows角色提供程序(AspNetWindowsTokenRoleProvider)。我使用本地组来定义角色,因为我正在开发的域和应用程序最终将部署到的域是不同的 当我最初设置将我的应用程序部署到IIS7服务器时,我将站点设置为使用基本身份验证,并使用适当的默认域,对于已经分配到授权组的用户来说,一切都很好。但是,当我尝试向任何授权组添加新用户时,该用户从未被授

我正在尝试创建一个应用程序,该应用程序使用规则来限制有权访问该应用程序的组。我正在使用用于ASP.NET的Windows身份验证和Windows角色提供程序(AspNetWindowsTokenRoleProvider)。我使用本地组来定义角色,因为我正在开发的域和应用程序最终将部署到的域是不同的

当我最初设置将我的应用程序部署到IIS7服务器时,我将站点设置为使用基本身份验证,并使用适当的默认域,对于已经分配到授权组的用户来说,一切都很好。但是,当我尝试向任何授权组添加新用户时,该用户从未被授权访问该应用程序。除了重新启动机器,我已经做了一切。我重新启动了IIS,并删除了客户端上的所有临时文件和cookie,但都没有用

应该说明的是,这是一个ASP.NETMVC应用程序,尽管我不认为这真的有什么区别。以下是my web.config中的相关条目:

<!-- use windows authentication -->
<authentication mode="Windows" />

<!-- use the Windows role provider -->    
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" />

<!-- global authorization rules -->
<authorization>
    <allow roles="admins,contractors"/>
    <deny users="*" />
</authorization>

例如,假设我们有一个用户“Domain\joe”,他目前不是本地“admins”组的成员,但我们想添加他。我们去添加他,然后当Joe尝试登录时,他看到一个错误,他没有被授权(在几次失败的登录尝试之后)。再多的IIS重启或让Joe删除Cookie和其他临时文件都无法解决此问题


ASP.Net是否保留某种秘密角色/组缓存?如何将新用户添加到组中,然后确保角色提供程序将看到该用户已添加到组中?

在添加用户或从组中删除用户与IIS接收更改之间似乎存在延迟。您可以设置一个注册表值,以更改缓存用户身份验证令牌的时间量,或同时禁用缓存。但是,更改此值(UserTokenTTL)似乎不会影响IIS实现用户已添加到组所需的时间。以下页面包含有关UserTokenTTL注册表项的更多信息:

您应该将此评论作为答案发布并接受它,以便其他人清楚地知道它已解决。您保存了我的屁股:D我必须
注销
,然后再次
登录
,IIS才能选择正确的组配置,也就是说,识别我添加到其中的用户,并允许ASP.NET MVC操作在基于该组用户的授权下运行。我快发疯了,因为它不允许用户执行该操作,而且用户当然属于该组。:)