Ich habe eine MVC4-Anwendung mit Windows Authentication
. Der Benutzer kann die URL einer der 10 Ansichten eingeben, um die Anwendung zu laden. Es gibt keine bestimmte HomepageSession Start und Action Filter für Sitzung Timeout-Behandlung
Ich muss zu einer Sitzungszeitlimitansicht umleiten, wenn der Benutzer für mehr als eine Minute im Leerlauf war. Ich habe den Sitzungszeitlimitwert in der Konfigurationsdatei als eine Minute behalten. Und ich habe eine action filter
erstellt, um einen bestimmten Sitzungswert zu überprüfen. Dieser bestimmte Sitzungswert wird in Session_Start
von Global.asax
festgelegt.
Aber wenn die Zeitüberschreitungsperiode vorbei ist, trifft die Anforderung erneut die Session_Start
und es wird den Wert zugewiesen. Daher leitet mein Aktionsfilter nicht zur Fehleransicht um. Was sind die möglichen Lösungen, um dies zu überwinden?
Web.Config
<system.web>
<!--Impersonate-->
<identity impersonate="true"/>
<!--Session Mode and Timeout-->
<sessionState mode="InProc" timeout="1" />
<authentication mode="Windows">
</authentication>
<authorization>
<allow users="?" />
</authorization>
</system.web>
Aktion Filter
[AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class SessionCheckAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext filterContext)
{
string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName.ToLower();
HttpSessionStateBase session = filterContext.HttpContext.Session;
var activeSession = session["IsActiveSession"];
if (activeSession == null)
{
//Redirect
var url = new UrlHelper(filterContext.RequestContext);
var loginUrl = url.Content("~/Error/SessionTimeout");
filterContext.HttpContext.Response.Redirect(loginUrl, true);
}
}
}
Global.asax
protected void Session_Start(object sender, EventArgs e)
{
Session["IsActiveSession"] = DateTime.Now;
}
Referenz: http://stackoverflow.com/questions/199099/how-to-manage-a-redirect-request-after-a-jquery-ajax-call – Lijo
Und http://stackoverflow.com/questions/ 16259230/global-filter-ajax-success-handlers und [408 Error Code] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) – Lijo