PostAuthenticateRequest多次发射

Ant*_*Ant 6 asp.net asp.net-mvc-2

我有Forms身份验证,我需要一个自定义对象存储在HttpContext.Current.User和Thread.CurrentPrincipal中.

为了得到这个,我听PostAuthenticateRequest事件,然后从DB读取我需要存储在HttpContext.Current.User和Thread.CurrentPrincipal中的所有用户数据,然后我实例化自定义IPrincipal和IIdentity对象并将它们分配给上面位置.

问题是由于某种原因,PostAuthenticateRequest会针对单个请求多次触发..这会导致不必要的DB往返,从而影响性能.

我该如何解决这个问题?(ASP.NET MVC 2)

谢谢.

Dan*_*son 5

您确定它针对单个请求运行了几次吗?请记住,页面上引用的每个资源(如图像和样式表)都会触发此事件,因为它们被视为单独的请求.建议您最好快速缓存自定义对象并检查它们是否存在于缓存中,如果不存在则仅访问数据库.

您需要在缓存上实现一些锁定,因为这些请求通常非常接近.