我有一个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。我需要在此自定义属性中的会话中存储交叉请求状态信息。有什么想法吗?
答案 0 :(得分:2)
如果会话在过滤器中不起作用,则有几种方法可用于存储全局变量,例如cookie和静态变量。
试试这个:
public static Boolean TokenValidated {get; set;}
您可以直接在代码中的任何位置设置TokenValidated,例如:
TokenValidated = true;
您也可以在代码中的任何位置获取TokenValidated。