我正在使用会话代码。当我的会话结束时,然后转到global.asax并重定向到特定的相对URL。


重定向有效,但重定向时,无法找到该页面。


我的代码出了什么问题?


两者都无法正常工作,与HTTP和我的IP相关路径。


 公共类SessionExpireAttribute:ActionFilterAttribute
 {
 public override void OnActionExecuting(ActionExecutingContext filterContext)
 {
 HttpContext ctx = HttpContext.Current;
 //在这里检查会议
 if(HttpContext.Current.Session [“UsuarioActual”] == null)
 {
 //filterContext.Result = new RedirectResult(“[http ip here]”);
 filterContext.Result = new RedirectResult(“〜/ Login”);
返回;
 }
 base.OnActionExecuting(filterContext);
 }
 }



 在我的global.asax中我有这个


 GlobalFilters.Filters.Add(new SessionExpireAttribute());



答案 0 :(得分:0)
尝试:
public class SessionExpireAttribute : ActionFilterAttribute
{
private RouteValueDictionary LoginRougte()
{
return new RouteValueDictionary
{
{"action", "Login"},
{"controller", "Account"},
{"area", ""}
};
}
private readonly List<string> _exceptCtrls = new List<string> { "userauth", "manager", "account" };
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var routeData = filterContext.HttpContext.Request.RequestContext.RouteData;
var controller = routeData != null ? routeData.Values["controller"] as string : string.Empty;
var check = !string.IsNullOrEmpty(controller) && !_exceptCtrls.Contains(controller.ToLower());
if (check && (HttpContext.Current.Session == null || HttpContext.Current.Session.Keys.Count == 0))
{
filterContext.Result = new RedirectToRouteResult(LoginRougte());
}
base.OnActionExecuting(filterContext);
}
}
我的直播项目中的代码。这是我的工作。希望它也适合你。
答案 1 :(得分:0)
我解决了它取代了这个
filterContext.Result = new RedirectToRouteResult(LoginRougte());
通过这个
HttpContext.Current.Response.Redirect("~/Login/LogOut");