Asp.net 在会话中丢失更改的数据
在将响应发送回客户端之前,我们的asp.net 2.0应用程序有一个非常长的同步过程。我观察到,当我们的应用程序仍在处理第一个请求时,在客户端IE8等待响应很长一段时间之后发送了第二个请求,与初始请求完全相同 我使用带有预定义键的page session在初始请求到达时存储一个标志,然后在客户端IE等待响应时启动一个长过程,因此如果第二个请求进入,我们的应用程序将检查会话值。在应用程序设置会话标志并开始处理后,我使用Fiddler“Abort session”中止初始请求,立即自动发送与第一个请求相同的第二个请求,但前面设置的会话值似乎不再存在Asp.net 在会话中丢失更改的数据,asp.net,session,Asp.net,Session,在将响应发送回客户端之前,我们的asp.net 2.0应用程序有一个非常长的同步过程。我观察到,当我们的应用程序仍在处理第一个请求时,在客户端IE8等待响应很长一段时间之后发送了第二个请求,与初始请求完全相同 我使用带有预定义键的page session在初始请求到达时存储一个标志,然后在客户端IE等待响应时启动一个长过程,因此如果第二个请求进入,我们的应用程序将检查会话值。在应用程序设置会话标志并开始处理后,我使用Fiddler“Abort session”中止初始请求,立即自动发送与第一个请
有什么想法吗?当第二个请求在您正在进行的过程中出现时,它是否会覆盖当前请求的值,因为它只存储一个项目?假设两个请求都在同一个会话下传入
可以考虑存储一个项目列表,这样你就可以把第二个项目添加到你的标志列表中,然后找到以前的项目并删除它们。 在启动第二个请求会话之前,可能会终止会话中当前的请求
我并不完全理解你的问题/解决方案,但希望这能有所帮助 根据您的评论进行编辑: 如果它不再存在,可能是由于您的会话超时并擦除了值,因此第二个会话将无法访问它。第二个连接是在同一个会话下进行的吗?比较两种情况下的会话ID。同时检查您的超时您还可以将此信息存储在过期时间很长的应用程序缓存中。如果您只希望每个用户有一个进程,请使用密钥为会话ID甚至用户的字典,然后存储您的值。当第二个请求由同一用户传入时,无论会话ID如何,您都可以找到它。只需确保在流程完成后清除即可。是,它是一项,但它会在设置值之前检查标志是否已存储在会话中。问题是第二个请求进入,第一个请求在会话中设置的标志不再存在。