标签: session-timeout

会话在 20 分钟后到期:是否空闲

我在用户通过申请表时丢失会话数据时遇到了一些麻烦。看起来他们正在通过应用程序表单丢失会话状态。(ASP.NET 4.0 WebForms 项目,IIS 6.0)

会话存储在状态服务器的进程外,因此它不是配置更改、应用程序域回收等 AFAIK。

<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="20" />
Run Code Online (Sandbox Code Playgroud)

我正在使用表单身份验证,滑动过期工作正常,正如您从下面的日志中看到的那样 - 您可以看到票证过期时间是正确的,并且按预期延长。

<authentication mode="Forms">
   <forms loginUrl="~/Login.aspx" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

我启用了一些自定义日志记录以尝试跟踪此情况。在每次Session_Start发生火灾时,global.asax我都会记录一些内容,并且每次有人加载应用程序表单或单击“下一步”以在浏览应用程序表单时在各个部分(在 MultiView 中)之间移动时,我也会记录一些内容。

以下是人们丢失会话状态的两个示例。日志以日志条目的日期/时间开始,然后是一些措辞。括号中的第二个日期/时间(在措辞之后)是 FormsAuthentication cookie 的到期日期/时间,源自CType(ctx.User.Identity, FormsIdentity).Ticket.Expiration.ToString

日志记录还会记录用户的 IP 地址和会话 ID。在将它们粘贴到此处之前,我已将其删除,我可以确认所有日志条目的 IP 地址和会话 ID 都相同。

示例 1:

**[26/10/2010 13:07] 会话开始 []**
[26/10/2010 13:11] 申请表第一页_加载 [26/10/2010 13:31:19]
[26/10/2010 13:13] 下一次点击应用表单,当前索引为 1 (vwSection1) [26/10/2010 13:31:19]
[26/10/2010 13:14] 下一次点击应用表单,当前索引为 2 (vwSection2) [26/10/2010 13:31:19]
[26/10/2010 13:15] 下一次点击应用表单,当前索引为 3 (vwSection3) [26/10/2010 13:31:19]
[26/10/2010 13:20] 下一次点击应用表单,当前索引为 5 (vwSection4) [26/10/2010 …

asp.net iis-6 session-state session-timeout asp.net-4.0

5
推荐指数
1
解决办法
3721
查看次数

ASP.NET 网页在文件上传期间无响应

我有一个带有 FileUpload 控件的 ASP.NET 网页


      <asp:FileUpload ID="fileUploadTN" style="width:250px" runat="server" />
Run Code Online (Sandbox Code Playgroud)

一个问题是上传大文件时,我的 asp.net 会话超时。这是由于 DiscountAsp.net 的限制和不可覆盖的 20 分钟会话超时(除非切换到 SqlServer)。上传大文件没问题,只是会话完成后不久就死了。

所以,我有一个解决方法,让 javascript 计时器定期访问另一个网页,以使会话保持更长时间。

       函数 timerEvent()
       {
         jQuery.get( "/svc.aspx?act=ping", function(data) { });
       }

这很好用,除了在文件上传期间。在文件上传过程中,HTTP GET 上没有响应,请求甚至不会到达 svc.aspx 页面。我可以在 Fiddler 中观看并且发生 GET,但没有响应。文件上传完成后,响应会再次启动。但是,如果上传长文件,我的会话可能会超时。

即使我在浏览器中打开一个新窗口并直接转到 svc.aspx 页面,它也会卡在请求中。我可以在不同的应用程序浏览器(例如 FF -> Chrome )窗口中打开一个窗口,然后 svc.aspx 响应。因此,当在同一会话中其他 HTTP GET 在文件上传期间无法响应时,这似乎是问题。

asp.net file-upload session-timeout

5
推荐指数
1
解决办法
2198
查看次数

如果在设定的时间范围内没有检测到活动,Javascript 书签/iFrame 会自动刷新加载的页面?

我有一个我在工作中使用的基于浏览器的应用程序(实际上所有公司应用程序现在都基于浏览器,原因很明显),它的会话超时时间很短。我不确定会话超时的确切设置,但大约是 5-10 分钟。

不可避免地,每当我必须使用它时,会话已超时,我将信息输入应用程序,提交它,然后页面加载一个全新的会话,而没有实际传递任何信息 - 我得到的只是一个新的会议。然后我必须重新输入信息并再次提交,以便让它真正提取我想要的内容。当然,我可以先刷新页面然后输入信息,但我不知道会话是否超时,有时它运行得很慢,所以这是浪费时间。我们的开发团队无法预见这样的小事不仅令人讨厌,但当你考虑到浪费的时间(我为一家非常大的公司工作)只是等待被炸毁的东西重新加载,然后如果预刷新时不得不重新输入提交的信息时,最终也会花费我们很多钱被遗忘了,因为它通常发生在我之外。在某个时候,我希望成为程序员和我们的客户服务机构之间的联络人。

无论如何,我离题了。

我想要做的是:我想创建一个 Javascript 书签或其他东西,如果在特定时间范围内未检测到活动,它将自动刷新它碰巧所在的任何页面。与我最终确定会话超时是什么相比,这个时间范围有点短。基本上,如果在那段时间内没有活动,我只想让页面每隔五分钟重新加载一次。(我不希望它突然刷新,因为在我使用应用程序的过程中时间已经到了,它应该进行自动刷新的唯一时间是应用程序页面一直处于空闲状态)

这可以用 Javascript 书签完成吗?我应该编写一个页面“包装器”,在 iFrame 或类似的东西中加载应用程序页面?我使用的应用程序站点有许多子页面,如果发生自动刷新超时,我希望它刷新我当时碰巧所在的任何页面。当然,如果这是不可能的,我会接受它只是重新加载主站点页面,如果这不容易实现,因为如果我离开应用程序的时间足够长以至于超时发生,那么我可能不需要仍然在我当时所在的任何帐户/页面上。

希望我已经很好地解释了自己。逻辑很简单 -if no activity detected withing x amount of time, refresh the current page是它的要点。

谢谢我的 StackOverflow 兄弟们,再次感谢您的帮助。

-Sootah


由于我无法影响页面本身的编码,因此我必须尽可能使用最简单的解决方案。一个对上次刷新/页面加载进行计时然后在达到超时时刷新同一页面的书签将是完美的。

如果这是不可能的,那么如果我可以编写一个简单的页面,我可以从本地计算机运行该页面,该页面可以通过将页面加载到框架或其他可接受的内容来执行相同的功能。


EDIT 10/3/11 7:25am MST
Run Code Online (Sandbox Code Playgroud)

由于我在坟墓工作并且工作时间安排很奇怪(不幸的是,这个网站被封锁在那里,因为它被认为是一个“论坛”——我在金融界工作,他们对信息泄露过于谨慎)在我授予赏金之前,有一个这些事件检测器中的一个检测页面上次加载的时间/?像 document.onload 之类的东西。我认为从上次加载页面时设置计时器将是最简单和最有效的方法。我的鼠标可能会移到浏览器上,因为我在处理其他事情时无意中打开了网站,如果计时器因此重置而我实际上没有以页面加载/重新加载的方式与网站进行交互,则会话超时。

javascript iframe bookmarklet session-state session-timeout

5
推荐指数
1
解决办法
4695
查看次数

如何使用 ajax 请求重置 ASP.Net 会话状态超时

我正在开发一个 ASP.Net 全 Ajax 站点。因为所有操作都是通过 Ajax 请求完成的,所以任何回发请求都不会发送到服务器。另一方面,我有一个 javascript 计时器,它发送 ajax 请求来检查会话,如果过期则将用户重定向到登录页面。

问题出在这里:当用户在页面上工作 20 分钟时,所有操作都将在 20 分钟后通过 ajax 请求进行,其会话过期,用户将在使用页面期间重定向到登录页面(通过该 javascript 计时器)。所以我需要用ajax请求刷新它的会话状态。但是如何?我怎样才能通过 ajax 请求重置会话状态超时!?!!

取决于我的 Google 搜索结果,我无法通过 ajax 请求执行,因为 SessionId 作为 cookie 存储在客户端中并更新它需要执行回发请求:(

注意:会话状态设置为InProc模式timeout = 20

抱歉我的英语语法不好,我是英语新手

问候,福罗吉

更新:ajax 请求是否更新会话状态超时?!!

更新:当我的用户登录站点时,我设置了一个如下会话:

Session["UserId"] = UserObject.Id;
Run Code Online (Sandbox Code Playgroud)

在我的所有页面中,我使用一些网络方法来执行如下操作:

[WebMethod]
public static Opr1 (Paramethers...)
{

   //Question is here , how can i update UserId  session to prevent to expire,how can i update it

   //execute my codes to preform Opr1

}
Run Code Online (Sandbox Code Playgroud)

asp.net ajax session-state session-timeout

5
推荐指数
1
解决办法
2万
查看次数

如何在 ASP.NET MVC 中为登录用户设置会话

我想为session time闲着不做任何工作的用户设置。

在用户再次访问并继续工作的特定时间之后,它应该重定向到登录页面。

session web-config session-timeout asp.net-mvc-3

5
推荐指数
1
解决办法
1611
查看次数

如何在asp.net表单身份验证中同时进行滑动和绝对超时

我有一个 asp.net 应用程序,它当前正在使用带有 SlideExpiration="true" 的表单身份验证。在 web.config 中,我们有以下内容:

<authentication mode="Forms">
  <forms loginUrl="Mylogin.aspx" timeout="15" slidingExpiration="true"/>
</authentication>
Run Code Online (Sandbox Code Playgroud)

这完全符合规范:有一个 15 分钟的滑动到期时间。但是,我们现在有一个新的安全要求:用户必须每 24 小时重新进行一次身份验证,即使他们一直处于“活跃”状态。换句话说,即使您在登录后的 24 小时内每分钟点击一次网站中的链接,24 小时后,您也会自动退出并重定向到登录页面。

但slidingExpriation 仅是真/假。据我所知,没有“两者”功能(例如,有slidingExpirationTimeout="15" 和absoluteExpirationTimeout="1440")。

除了滚动我自己的解决方案,有没有办法使用内置的表单身份验证来实现这一点?

提前致谢。

asp.net forms-authentication session-timeout

5
推荐指数
1
解决办法
3501
查看次数

Spring MVC 处理会话已过期

我正在使用Jboss EAP 6.2,Java EE 6Spring MVC 4.0.2。当会话过期时,我想执行页面重定向。

我开发了一个Spring拦截器

@Component
public class SessionExpiredInterceptor extends HandlerInterceptorAdapter {


    static final Logger logger = Logger.getLogger(SessionExpiredInterceptor.class);
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
     final HttpSession session = request.getSession(false);
         if ( session == null || session.isNew() ) {
             ConfigurationProperties confProp = ConfigurationProperties.getInstance();
             logger.info("Sessione scaduta, redirect home page");
             request.getSession(true);
             response.sendRedirect(request.getContextPath() + "/" + 
                     confProp.getInstance().getProperty("session.expired.redirect"));
         } 
        return true;

    }
}
Run Code Online (Sandbox Code Playgroud)

但我有以下例外:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name …
Run Code Online (Sandbox Code Playgroud)

java session spring spring-mvc session-timeout

5
推荐指数
1
解决办法
1万
查看次数

如何使用 Xamarin.Forms 重新启动应用程序

如果我在我的应用程序中管理会话(任何会话概念都适用),并且我认为会话已过期,无论出于何种原因,我如何以编程方式重新启动应用程序(普遍适用于 iOS、Android、WinPhone)?

session-timeout application-restart xamarin.android xamarin xamarin.forms

5
推荐指数
2
解决办法
1万
查看次数

Gorilla Sessions - 如何根据请求自动更新 Cookie 过期时间?

我知道许多其他语言和 Web 框架会在每次通过后端访问会话(或类似的操作)时自动将 cookie 的过期时间更新为会话超时。我不相信 Gorilla 提供此实用程序。

我正在考虑编写一些请求中间件,如果它检测到有效的会话,将延长 cookie 的生命周期,但我想知道是否有更好的方法来做到这一点。

更新 cookie 过期的最佳做法是什么,尤其是与 Gorilla/Go 相关的做法?

cookies session go session-timeout gorilla

5
推荐指数
1
解决办法
2013
查看次数

复制整个 Google Drive 文件结构的 Google Apps 脚本;如何避免超时?

我的单位要改用 Google Business 帐户,每个人都需要将他们的云端硬盘文件转移到新帐户。Drive 不允许在这些帐户之间转移所有权,因此我创建了一个脚本来将文件和文件夹从旧帐户复制到新帐户。(旧帐户的内容已移动到与新帐户共享的文件夹中。)

这是我到目前为止所拥有的:

function copyDrive() {
  var originFolder = DriveApp.getFolderById(originFolderID);
  var destination = DriveApp.getFolderById(destinationID);
  copyFiles(originFolder, destination);

};

function copyFiles(passedFolder, targetFolder) {
  var fileContents = passedFolder.getFiles();
  var file;
  var fileName;

  while(fileContents.hasNext()) {
    file = fileContents.next();
    fileName = file.getName();
    file.makeCopy(fileName, targetFolder);
  }
  copySubFolders(passedFolder, targetFolder);
};

function copySubFolders(passedFolder, targetFolder) {
  var folderContents = passedFolder.getFolders();
  var folder;
  var folderName;

  while(folderContents.hasNext()) {
    folder = folderContents.next();
    folderName = folder.getName();
    var subFolderCopy = targetFolder.createFolder(folderName);
    copyFiles(folder, subFolderCopy);
  }
};
Run Code Online (Sandbox Code Playgroud)

请原谅任何不雅;我是新手。该脚本实际上运行良好并保留了文件夹结构,但是在复制了大约 150 个文件和文件夹后它会超时。我一直在研究如何使用延续令牌,并且我已经仔细阅读了这篇文章。我想我被困在了概念层面,因为我不确定延续令牌将如何与我设置的递归函数进行交互。看起来我最终会得到一堆我的copySubFolders …

recursion session-timeout google-apps-script google-drive-api

5
推荐指数
1
解决办法
4278
查看次数