Asp.net 访问Global.asax中的会话变量
在我的ASP.NETWebForms应用程序中,我试图在每个ajax请求上重置会话超时。我理解可以通过在Global.asax中实现EndRequest方法来实现,如下所示: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
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";
}