会话在自定义动作过滤器中不起作用

本文关键字:过滤器 不起作用 自定义 会话 | 更新日期: 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