在我的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
对此方面的任何建议都非常感激。
答案 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";
}