如何将 baseController 对象 ID 设置为输出缓存的键
How to set baseController object Id as key for outputcache
public class BaseController : Controller
{
// GET: Base
public static UserManager.User _CurrentUser;
}
}
此代码是我的 BaseController 的一部分,我想使用 _CurrrentUser.Id 作为输出缓存的键。
[OutputCache(Duration = 1200, VaryByCustom = _CurrentUser.Id)]
当我尝试这样做时,它说 "Argument in attribute must be constant exprssion" 并且还需要设置为静态。
我可以让这个 属性 静态,但我如何让它成为常量表达式,以便我可以将它用于输出缓存。
我建议您应该从 Auth 获取 CurrentUserId。曲奇饼。我是这样用的
[Authorize]
public class BaseController : Controller
{
private UserModel _currentUser;
public UserModel CurrentUser => _currentUser ?? (_currentUser = GetCurrentUser());
private UserModel GetCurrentUser()
{
UserModel currentUser;
if (!User.Identity.IsAuthenticated) return null;
try
{
var userDataFromCookie = CookieHelper.GetCookie(FormsAuthentication.FormsCookieName);
if (string.IsNullOrWhiteSpace(userDataFromCookie))
throw new ArgumentException("Authentication cookie is null");
currentUser = JsonHelper.Deserialize<UserModel>(FormsAuthentication.Decrypt(userDataFromCookie)?.UserData);
}
catch (Exception)
{
throw;
}
return currentUser;
}
}
这样的 Cookie 助手方法
public static string GetCookie(string key)
{
return HttpContext.Current.Request.Cookies[key] != null ? HttpContext.Current.Request.Cookies[key].Value : null;
}
public class BaseController : Controller
{
// GET: Base
public static UserManager.User _CurrentUser;
}
}
此代码是我的 BaseController 的一部分,我想使用 _CurrrentUser.Id 作为输出缓存的键。
[OutputCache(Duration = 1200, VaryByCustom = _CurrentUser.Id)]
当我尝试这样做时,它说 "Argument in attribute must be constant exprssion" 并且还需要设置为静态。
我可以让这个 属性 静态,但我如何让它成为常量表达式,以便我可以将它用于输出缓存。
我建议您应该从 Auth 获取 CurrentUserId。曲奇饼。我是这样用的
[Authorize]
public class BaseController : Controller
{
private UserModel _currentUser;
public UserModel CurrentUser => _currentUser ?? (_currentUser = GetCurrentUser());
private UserModel GetCurrentUser()
{
UserModel currentUser;
if (!User.Identity.IsAuthenticated) return null;
try
{
var userDataFromCookie = CookieHelper.GetCookie(FormsAuthentication.FormsCookieName);
if (string.IsNullOrWhiteSpace(userDataFromCookie))
throw new ArgumentException("Authentication cookie is null");
currentUser = JsonHelper.Deserialize<UserModel>(FormsAuthentication.Decrypt(userDataFromCookie)?.UserData);
}
catch (Exception)
{
throw;
}
return currentUser;
}
}
这样的 Cookie 助手方法
public static string GetCookie(string key)
{
return HttpContext.Current.Request.Cookies[key] != null ? HttpContext.Current.Request.Cookies[key].Value : null;
}