会话在自定义动作过滤器中不起作用
本文关键字:过滤器 不起作用 自定义 会话 | 更新日期: 2023-09-27 18:06:28
我有一个ASP。. NET自定义动作过滤器:
namespace Sample.Attributes
{
[AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = false)]
public class SampleValidator : ActionFilterAttribute
{
public override Task OnActionExecutingAsync(System.Web.Http.Controllers.HttpActionContext actionContext, System.Threading.CancellationToken cancellationToken)
{
var tokenValidated = HttpContext.Current.Session["TokenValidated"];
if (tokenValidated == null || tokenValidated != "true")
{
HttpContext.Current.Session["TokenValidated"] = "true";
}
return base.OnActionExecutingAsync(actionContext, cancellationToken);
}
}
}
但是,HttpContextFactory.Current.Session是NULL。我需要在这个自定义属性的会话中存储跨请求状态信息。什么好主意吗?
如果session在过滤器中不起作用,有几种方法可以用来存储全局变量,如cookie和静态变量。
试试这个:
public static Boolean TokenValidated {get; set;}
您可以在代码的任何地方直接设置TokenValidated,例如:
TokenValidated = true;
也可以在代码的任何地方获得TokenValidated