Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net core 通过.NET CORE中的ActionFilterAttribute访问会话_.net Core_Asp.net Core 2.1 - Fatal编程技术网

.net core 通过.NET CORE中的ActionFilterAttribute访问会话

.net core 通过.NET CORE中的ActionFilterAttribute访问会话,.net-core,asp.net-core-2.1,.net Core,Asp.net Core 2.1,我试图使用.NETCore中的ActionFilterAttribute访问会话值。因此,我使用以下代码: 获取注释[SessionCheck]的普通.NET核心控制器 [SessionCheck] public class HomeController : Controller { } 这些类由ActionFilterAttribute类扩展,并覆盖OnActionExecuted方法,我希望在其中访问会话值。有可能吗?我只能访问密钥,但不能访问会话值 public class Sessio

我试图使用.NETCore中的ActionFilterAttribute访问会话值。因此,我使用以下代码:

获取注释[SessionCheck]的普通.NET核心控制器

[SessionCheck]
public class HomeController : Controller
{
}

这些类由ActionFilterAttribute类扩展,并覆盖OnActionExecuted方法,我希望在其中访问会话值。有可能吗?我只能访问密钥,但不能访问会话值

public class SessionCheck:ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext context)
    {
        var session = context.HttpContext.Session;
        //var mySessionValue = session["user"];
    }
}
我的主要问题是,我有一个会话值,它描述了我必须将请求路由到哪里。如果中有特殊值,我希望将请求路由到位置a,否则路由到位置B


还有其他方法吗?

我也有同样的问题,你可以做如下操作:

filterContext.HttpContext.Session.GetString("user");
如上所述编写
SessionCheck
类您可以通过键入
HttpContext.Session.SetString(“用户”、“用户一”)来设置特殊值
在要设置的位置,也可以使用多个
,如果elseif
与此类似,这在.Net Core 3.1中起作用


“我只能访问密钥,但不能访问会话值。”你是什么意思?它是空的吗?这就是访问会话的方式。如果为空,则表示尚未设置。
public class SessionCheck : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext actionExecutingContext)
    {
        if (actionExecutingContext.HttpContext.Session.GetString("user") == "User One")
        {
            actionExecutingContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
            {
                controller = "LocationA Controller",
                action = "LocationA Action",
                returnurl = Microsoft.AspNetCore.Http.Extensions.UriHelper.GetEncodedUrl(actionExecutingContext.HttpContext.Request)
            }));
        }
        else
        {
            actionExecutingContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
            {
                controller = "LocationB Controller",
                action = "LocationB Action",
                returnurl = Microsoft.AspNetCore.Http.Extensions.UriHelper.GetEncodedUrl(actionExecutingContext.HttpContext.Request)
            }));
        }
    }
}