Если вы хотите сохранить вызов базы данных, вы можете использовать служебный метод для кэширования профиля или реализовать собственный пользовательский MembershipProvider, который обрабатывает кэширование.
Служебный метод, вероятно, является самым простым решением в этом случае, если только у вас нет других функций, которые вы хотите реализовать, которые будут реализованы путем реализации пользовательского MembershipProvider.
Вы можете обратиться к этой ссылке для более подробной информации:
Как получить доступ к идентификатору пользователя в членстве ASP.NET без использования Membership.GetUser ()?
Вот пример вспомогательного метода для кэширования. Вы можете передать значение slideMinutesToExpire, чтобы оно истекло из кэша через некоторое время, чтобы избежать чрезмерного использования памяти сервера, если у вас много пользователей.
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);
}
}