Доступ к переменной сеанса в Global.asax - PullRequest
0 голосов
/ 07 мая 2018

В моем приложении ASP.net Web Forms я пытался сбросить время ожидания сеанса при каждом запросе ajax. Я понимаю, что это можно сделать с помощью метода EndRequest в Global.asax, как показано ниже:

  Sub Application_EndRequest(sender As Object, ByVal e As EventArgs)

  End Sub

Но проблема в том, что переменная сеанса здесь не находится в области видимости. Я хочу выполнить следующий код:

 If (Session("_UserID")) Is Nothing Then
    Session.Timeout = 60 * 24 '24 hours
End If

Любой совет в этом отношении высоко ценится.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Посмотрите на это. Я верю, что это может решить вашу проблему.

$(document).ready(function () {         



        $("#asp").on("click", function () {
            var obj = {};                
            $.ajax({
                type: "POST",
                url: "Default7.aspx/getname1",
                data: JSON.stringify(obj),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                global :true,
                success: function (response) {
                    alert(response.d);
                },
                failure: function (response) {
                    alert("faillure");
                }
            });
            return false;

        });


        $("#asp1").on("click", function () {
            var obj = {};
            $.ajax({
                type: "POST",
                url: "Default7.aspx/getname2",
                data: JSON.stringify(obj),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                global: true,
                success: function (response) {
                    alert(response.d);
                },
                failure: function (response) {
                    alert("faillure");
                }
            });
            return false;

        });
    });


    $(document).ajaxComplete(function () {
        var obj = {};

        $.ajax({
            type: "POST",
            url: "Default7.aspx/getname1",
            data: JSON.stringify(obj),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            global :false,
            success: function (response) {
                alert(response.d);
            },
            failure: function (response) {
                alert("faillure");
            }
        });
        return false;
    });




<button id="asp" >Click Me</button>
<button id="asp1" >Click Me</button>

Делайте что хотите в функции getname1. он будет вызываться каждый раз, когда вы совершаете ajax-вызов на страницу. Но в вашем случае остается проблема, что вам нужно вызвать метод мастер-страницы. К сожалению, я думаю, что невозможно вызвать веб-методы мастер-страницы через вызов ajax, так как мастер-страницы преобразуются в пользовательские элементы управления во время выполнения. Итак, что можно сделать, чтобы создать файл веб-службы (.asmx), добавить в него WebMethod и вызвать его с помощью вызова .ajax, как предложено выше в методе ajaxComplete. Метод веб-сервиса будет выглядеть следующим образом.

 [WebMethod(EnableSession = true)]
 public string setSession()
 {
    HttpContext.Current.Session.TimeOut=60.24;
    return "1";
 }
0 голосов
/ 07 мая 2018

попробуйте это в Global.asax. это событие срабатывает для каждого запроса.

void Application_AcquireRequestState(object sender, EventArgs e)
{
    // Session 
    HttpContext context = HttpContext.Current;
    context.Session.Timeout = 60 * 24;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...