ASP.NET SqlRoleManager CacheRolesInCookie - 未在Chrome中设置Cookie

时间:2014-03-24 16:22:44

标签: asp.net asp.net-mvc google-chrome cookies sqlroleprovider

我在ASP.NET MVC 3应用程序中使用SqlRoleManager,效果很好。我最近启用了cacheRolesInCookie选项,该选项显然适用于Firefox和Internet Explorer,但不适用于Chrome。在Fiddler,我甚至没有看到cookie回复Chrome中的响应。

以下是我在Web.config中设置的内容:

<roleManager enabled="true" defaultProvider="SqlRoleManager" cacheRolesInCookie="true" cookieName=".ASPROLES" cookieSlidingExpiration="false" cookieTimeout="5" createPersistentCookie="true"  maxCachedResults="255">
  <providers>
    <add name="SqlRoleManager"
         type="System.Web.Security.SqlRoleProvider" 
         connectionStringName="aspnetConnectionString" 
         applicationName="RedactedNamespace.Web" />
  </providers>
</roleManager>

正如我所提到的,它在Firefox和IE中很有用,但不适用于Chrome。看着SQL Server Profiler,我可以清楚地看到Firefox和IE中的第一个请求将命中数据库中的角色,然后缓存它们直到cookie过期。 Chrome会针对每个请求点击数据库一次。

我也在使用SqlMembershipProvider并从FormsAuthenticationTicket中手动设置cookie而没有任何问题; cookie适用于所有浏览器。

在Firefox中,cookie接近(但小于)4096字节,并且是HttpOnly。

如何在Chrome中的Cookie中缓存角色?

0 个答案:

没有答案