To redirect user to sign in page when session timed out for Ajax request, I implemented following custom attribute,
Code related to Unauthorize request is as follows,
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            if (filterContext.HttpContext.Request.IsAjaxRequest())
            {
                filterContext.HttpContext.Response.StatusCode = 403;
                filterContext.Result = new JsonResult
                {
                    Data = new
                    {
                        Error = "SessionTimeOut"
                    },
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet
                };
                filterContext.HttpContext.Response.End();
            }
....................
This works fine for ajax requests ($.ajax).
But filterContext.HttpContext.Request.IsAjaxRequest() does not recognize XMLHttp request as an ajax request.
var xhr = new XMLHttpRequest();
                xhr.open('POST', "...URL");
                xhr.send(formdata);
Does anyone came across similar issue? what would be a solution for this?
 
     
    