【问题标题】:How to check sessions on every action of a controller?如何检查控制器每个动作的会话?
【发布时间】:2018-11-21 09:51:31
【问题描述】:

我有一个名为 AllEntities 的控制器,它有多个操作,例如 GetEntityByTypeIdGetLastEntity

我想在使用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) { }
    
        }
        ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 2017-07-13
      相关资源
      最近更新 更多