Asp.net 访问Global.asax中的会话变量

Asp.net 访问Global.asax中的会话变量,asp.net,webforms,Asp.net,Webforms,在我的ASP.NETWebForms应用程序中,我试图在每个ajax请求上重置会话超时。我理解可以通过在Global.asax中实现EndRequest方法来实现,如下所示: Sub Application_EndRequest(sender As Object, ByVal e As EventArgs) End Sub 但问题是会话变量不在这里的范围内。我想执行以下代码: If (Session("_UserID")) Is Nothing Then Session.T

在我的ASP.NETWebForms应用程序中,我试图在每个ajax请求上重置会话超时。我理解可以通过在Global.asax中实现EndRequest方法来实现,如下所示:

  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

非常感谢您在这方面提供的任何建议。

请在Global.asax中尝试。此事件针对每个请求激发

void Application_AcquireRequestState(object sender, EventArgs e)
{
    // Session 
    HttpContext context = HttpContext.Current;
    context.Session.Timeout = 60 * 24;
}

看看这个。我相信这可以解决你的问题

$(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>

这意味着您将所有内容都保存在内存中(假设默认的“inproc”)供每个人使用24小时。你不能在配置中设置这个吗?(或者解释为什么不)我在母版页上有一个控件(RadNotification1)。有没有办法,我可以在应用程序状态事件中访问它。我想更改它的属性,如RadNotification1.ShowInterval=(Session.Timeout-1)*60*1000为什么不能在页面加载时更改它/页面上的任何方法??您现在拥有session上的值,并且可以在页面加载上访问该值。在这种情况下,我必须在我的应用程序的所有页面上执行该操作。我想在一个地方做。你是说你在母版页上有那个控件。在母版页上做。它将出现在所有页面中,但我需要捕获所有ajax请求。(现在我确信我遗漏了一些非常基本的东西:))母版页的作用域中是否存在每次内容页中发生ajax请求时都会触发的事件?
 [WebMethod(EnableSession = true)]
 public string setSession()
 {
    HttpContext.Current.Session.TimeOut=60.24;
    return "1";
 }