0
我編寫了自定義角色提供程序,它在內部使用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");
}
在調試這一段代碼(來自測試網站),調試器進入每個在提供商所示的方法和內,執行所有邏輯儘管方法感應是多餘的或不是。我認爲每個方法的第二次調用不應執行,因爲結果將直接從緩存中直接詢問我的提供程序而返回。
我在做什麼/思考錯誤以及如何修復緩存功能?
Regards
感謝您的答覆。我已經看到,角色信息總是緩存在請求中(緩存可以啓用或禁用),但啓用cookie緩存後,角色還可以在請求之間緩存。 – jwaliszko 2010-09-27 13:26:48