【问题标题】:How to check sessions on every action of a controller?如何检查控制器每个动作的会话?
【发布时间】:2018-11-21 09:51:31
【问题描述】:
我有一个名为 AllEntities 的控制器,它有多个操作,例如 GetEntityByTypeId 和 GetLastEntity
我想在使用AllEntities 控制器时进行会话检查
假设我请求一个网址http://localhost:59656/AllEntities/GetLastEntity
那么它应该检查天气会话是否已分配
这样做的一种方法是设置条件if (Session["userName"] == null)
在这个控制器的每一个动作中
如何对整个 AllEntities 控制器检查一次
任何形式的帮助将不胜感激
【问题讨论】:
标签:
c#
asp.net-mvc
asp.net-mvc-4
asp.net-mvc-3
【解决方案1】:
您可以覆盖控制器Initialize 方法,该方法会在每个操作上触发。我用它在多个/所有视图上填充我需要的 ViewBag 元素。
public class YourController : Controller
{
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
try
{
//do your session check here...
//alternatively, if you wanted to limit to certain actions in your controller you could say:
var actionName = requestContext.RouteData.Values["action"].ToString().ToLower();
if(actionName == "actionName" || actionName == "actionName2") {
//do your limited session work...
}
}
catch (Exception e) { }
}
...