Невозможно обработать время ожидания сеанса в вызовах ajax - PullRequest
0 голосов
/ 15 декабря 2018

Сценарий: Здесь я пытаюсь обработать тайм-аут сеанса при вызове ajax, но после многих попыток я смог решить эту проблему.Я пытался как следует.

Вот несколько принятых ответов, за которыми я следовал.https://stackoverflow.com/a/5242746

AuthorizeAttribute

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class AuthorizeFilter : AuthorizeAttribute
{
    public string[] AllowedUserTypes { get; set; }
    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        if (ManageSession.UserDetail == null)
        {
            if (filterContext.HttpContext.Request.IsAjaxRequest())
            {
                HandleUnauthorizedRequest(filterContext);
            }
            else
            {
                filterContext.Result = (new RedirectController().RedirectToHome());
            }
        }            
    }

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {           
        if (filterContext.HttpContext.Request.IsAjaxRequest())
        {
            filterContext.HttpContext.Response.StatusCode = 401;
            filterContext.Result = new JsonResult
            {
                Data = new
                {                   
                    message = "sorry, but you were logged out"
                },
                JsonRequestBehavior = JsonRequestBehavior.AllowGet
            };
            filterContext.HttpContext.Response.End();
            return;
        }
        else
        {
            base.HandleUnauthorizedRequest(filterContext);
        }
    }      
}

Код контроллера

[AuthorizeFilter(AllowedUserTypes = new string[] { "DataEntry", "Admin" })]
public class MarksEntryController : BaseController
{
    public JsonResult CheckSession()
    {
        return Json("Check Session");
    }
}

Ajax Call

$("#btnsaveSession").click(function () {        
    $.ajax(
       {
           url: '@Url.Action("CheckSession", "MarksEntry")',
           datatype: JSON,
           error: function (response) {
               debugger;
               alert(response);
           },
           success: function (response) {
               debugger;
               if (response == 401) {
                   location.reload();
               }
           }
       });
});

Пожалуйста, дайте мне знать, где я делаю ошибку.Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...