我已经编写了自定义角色提供程序,它在内部使用Web服务方法来获取角色或用户名。此提供程序继承自
system.web.security.roleprovider
. 在
Web.CONFIG
文件我打开了.NET提供的使用cookie的缓存功能。
这是外观
Web.CONFIG
此提供程序的节:
<system.web>
<roleManager defaultProvider="MyProvider"
enabled="true"
cacheRolesInCookie="true"
cookieName=".MYROLES"
cookieTimeout="30"
cookiePath="/"
cookieRequireSSL="false"
cookieSlidingExpiration="true"
cookieProtection="All">
<providers>
<clear/>
<add name="MYProvider"
type="MYProvider.MyRoleProvider, MYProvider"
Service1URL="http://localhost:54013/service1.asmx"
Service2URL="http://localhost:54013/service2.asmx"
rolesPrefix="ABC_"
domainName="abc.corp"
specialUserForAllRoles="abc"
applicationURL="http://example.com"
logCommunication="true"/>
</providers>
</roleManager>
</system.web>
现在,它来测试缓存是否工作。我写了一个简单的方法,看起来是这样的:
public void TestCache()
{
string[] roles = Roles.GetAllRoles();
roles = Roles.GetAllRoles();
string[] rolesForUser1 = Roles.GetRolesForUser("user1");
rolesForUser1 = Roles.GetRolesForUser("user1");
string[] usersInRole = Roles.GetUsersInRole("ABC_DEV");
usersInRole = Roles.GetUsersInRole("ABC_DEV");
Roles.IsUserInRole("user1", "ABC_DEV");
Roles.IsUserInRole("user1", "ABC_DEV");
}
在调试这段代码(从测试网站)时,调试器将在提供程序中输入所示的每个方法,并执行其中的所有逻辑,尽管事实上方法归纳是多余的或不是多余的。我认为不应该执行对每个方法的第二次调用,因为返回结果时不会直接从缓存请求提供程序。
我在做什么/思考错误以及如何修复缓存功能?
当做