В моем приложении asp.net MVC в разделе макета есть поле со списком, в которое я загружаю данные для него из сеанса.
Я хотел выйти из сеанса пользователя, если данные сеанса равны нулю. Итак, я нашел этот класс и добавил его в свой проект.
public class SessionExpireAttribute: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var context = filterContext.HttpContext;
HttpContext ctx = HttpContext.Current;
string sessionCookie = context.Request.Headers["Cookie"];
// check sessions here
if (sessionCookie == null)
{
filterContext.Result = new RedirectResult("~/Account/LogOff");
return;
}
base.OnActionExecuting(filterContext);
}
}
И я добавил вверху контроллеров этот атрибут.
[HandleError]
[SessionExpire]
public class TaskMainsController : Controller
{
Всякий раз, когда данные сеанса равны нулю, пользователь выходит из системы и снова перенаправляется на вход в систему.
Но в поле со списком «Макет», если данные сеанса равны нулю, он не выйдет из системы, а затем сработает session data null exception. Как этого избежать и справиться с этой ошибкой?
Это приложение вот-вот запустится, но я не нашел решения по этому вопросу.
@FarshadDelavarpur Да. даже данные сеанса также равны нулю





Я думаю, вам просто нужно применить этот фильтр ко всем контроллерам вашего проекта. Для этого вы можете добавить этот фильтр в GlobalFilters в классе Global.asax.cs:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalFilters.Filters.Add(new SessionExpireAttribute());
}
}
Вы хотите, чтобы пользователь выходил из системы всякий раз, когда заголовок Cookie имеет значение null?