访问Global.asax中的会话变量

时间:2018-05-07 10:36:10

标签: asp.net webforms

在我的ASP.net Web窗体应用程序中,我试图在每个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

对此方面的任何建议都非常感激。

2 个答案:

答案 0 :(得分:0)

在Global.asax中尝试此操作。每个请求都会触发此事件。

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

答案 1 :(得分:0)

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

$(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调用调用Master Page的Web方法是不可能的,因为Master Pages在运行时被转换为用户控件。那么可以做些什么来创建一个Web服务(.asmx)文件并在其中添加一个WebMethod并使用上面ajaxComplete方法中建议的.ajax调用来调用它。 Web服务方法看起来像这样。

 [WebMethod(EnableSession = true)]
 public string setSession()
 {
    HttpContext.Current.Session.TimeOut=60.24;
    return "1";
 }