当前用户的配置文件数据只检索一次

时间:2009-11-16 19:18:44

标签: asp.net security profile


a)当前用户第一次访问Profile对象时,是否为Asp.Net 检索该用户的完整配置文件,或者在调用时检索一个配置文件属性?


b)在任何情况下,是每次调用DB时从DB检索的当前用户的配置文件数据,还是仅检索一次,然后在当前请求期间保存?


感谢名单

2 个答案:

答案 0 :(得分:1)

如果要保存数据库调用,可以使用实用程序方法来缓存配置文件,也可以实现自己的自定义MembershipProvider来处理缓存。

在这种情况下,实用程序方法可能是最简单的解决方案,除非您想要实现其他功能,这些功能将通过实现自定义MembershipProvider来实现。

您可以参考此链接了解更多详情: How can I access UserId in ASP.NET Membership without using Membership.GetUser()?

以下是执行缓存的实用程序方法示例。您可以传递一个slidingMinutesToExpire,使其在一段时间后从缓存中过期,以避免在有许多用户时消耗过多的服务器内存。

public static void AddToCache(string key, Object value, int slidingMinutesToExpire)
{
    if (slidingMinutesToExpire == 0)
    {
        HttpRuntime.Cache.Insert(key, value, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.NotRemovable, null);
    }
    else
    {
        HttpRuntime.Cache.Insert(key, value, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(slidingMinutesToExpire), System.Web.Caching.CacheItemPriority.NotRemovable, null);
    }
}

答案 1 :(得分:1)

您不指定这是网站项目还是Web应用程序项目;在配置文件方面存在很大差异,因为它们没有为Web应用程序项目模板开箱即用:

http://codersbarn.com/post/2008/07/10/ASPNET-PayPal-Subscriptions-IPN.aspx

http://leedumond.com/blog/asp-net-profiles-in-web-application-projects/

您是否实际实施过它还是刚刚进入规划阶段?如果是后者,那么上面的链接应该提供一些有价值的信息。关于缓存问题,我会按照Dave的建议去做。