- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 C# MVC 开发 Web 应用程序并使用 Session 在多个请求之间保留数据。
有时 session 超时,所以我想办法让它保持事件状态,并在 stackoverflow 中找到了一些解决方案。由于不愿意简单地将代码复制粘贴到我的项目中,我试图重写代码以满足我的需要并更好地理解它。
起初我尝试使用以下代码使 session 保持事件状态:
JS + jQuery - 客户端:
function keepAliveFunc(){
setTimeout("keepAlive()", 300000);
};
function keepAlive() {
$.get("/Account/KeepAlive", null, function () { keepAliveFunc(); });
};
$(keepAliveFunc());
C# - 服务器端:
[HttpGet]
public bool KeepAlive()
{
return true;
}
但这似乎并没有让我的 session 保持事件状态,它正常过期。经过一段时间的摆弄后,我将代码更改为:
JS + jQuery - 客户端:
function keepAliveFunc(){
setTimeout("keepAlive()", 10000);
};
function keepAlive() {
$.post("/Account/KeepAlive", null, function () { keepAliveFunc(); });
};
$(keepAliveFunc());
C# - 服务器端:
[HttpPost]
public JsonResult KeepAlive()
{
return new JsonResult { Data = "Success" };
}
后者运行良好,这让我得出结论,虽然有些不确定,但由于 POST 请求而不是 GET 请求, session 保持事件状态。这就提出了一个问题:为什么我需要在试图让我的 Session 保持事件状态时使用 POST?有什么不同?我是否犯了其他我不理解的错误?
我一直在寻找答案,但我似乎找不到关于这个问题的任何答案,只是没有太多解释的解决方案。阅读 MSDN 上的 Session 也对我帮助不大。这让我得出结论,有一些与 Session 相关的“词”和这个我还没有遇到的特殊问题,这使我无法有效地谷歌搜索。
最佳答案
无论是 GET 还是 POST,浏览器都会随请求发送 SessionId cookie。因此,出于保持事件的目的,使用哪一个都无关紧要。由于您和“ping”服务器的时间间隔不同,您很可能会看到行为上的差异。
对于 GET 请求,您以 300000 毫秒的间隔执行,而对于 POST 请求,您以 10000 毫秒的间隔执行。
很可能,您的服务器的 session 生命周期介于这两个值之间。但是,您可以配置 session 生命周期以满足您的需要(如增加它),但请记住,过期 session 是一项安全功能,因此请尝试找到一个足够大的小值让您的应用程序正常工作,但是仍然允许 session 在安全的时间间隔内过期。
关于c# - 为什么要使用 post 来保持 session 存活?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35430918/
我更喜欢使用 io_service 的方式是在应用程序启动时创建一个线程来执行 io_service的运行方法。问题是,如果 io_service 没有任务,它的 run 方法立即返回并且线程终止。
我有一个调用异步方法的 BackgroundWorker。 async 方法提供了一个回调参数,让我知道它已完成。 //Bunch of stuff to prep for the call happ
我正在使用Gitlab Autodevops在我的kubernetes集群上部署应用程序。该应用应始终仅运行一个实例。 问题是,在更新过程中,Helm在新的Pod准备就绪之前会杀死当前正在运行的Pod
在页面刷新后显示 ExtJs 应用程序的最佳方式是什么? 示例:位于 x,y 位置的窗口带有一些面板。 最佳答案 查看 stateId 属性以及在 ExtJs 中如何保存状态:http://docs.
我必须重定向到 zk 中的 tel:**** 链接,并在用户完成调用后,将他重定向到另一个页面。问题是,当我单击链接时,ZK 认为我将离开浏览器,并自动完成我的客户端 session (尽管我确实在页
我有一个适用于 IOS 的位置跟踪器应用程序,即使应用程序处于后台模式,它也应该发送当前位置。但是当应用程序进入后台模式时,socket.io 就会死掉。有没有办法让它保持活力? 最佳答案 您不应将
我正在使用 C# MVC 开发 Web 应用程序并使用 Session 在多个请求之间保留数据。 有时 session 超时,所以我想办法让它保持事件状态,并在 stackoverflow 中找到了一
我从 Activity B 启动 Activity A 。但是当我启动 A 时, B 被摧毁了。结果 A 暂时显示,然后被销毁。即使在 B 被摧毁后,我如何让 A 活着。这就是我从 B 启动 A 的方
所以,即使在输入 onError() 之后,我也想保持 observable keep alive(不丢弃),所以我可以输入 onNext() 我已经关注this answer 通过添加 .catch
我是一名优秀的程序员,十分优秀!