2010-03-09 176 views
0

我们的asp.net 2.0应用程序在将响应发送回客户端之前有很长的过程(同步)。我观察到,第二个请求,与第一个请求完全相同,在客户端IE8长时间等待响应之后发送,而我们的应用程序仍在处理第一个请求。丢失会话中更改的数据

我使用网页会话使用预定义项来存储一个标志,当初始请求到达,然后开始漫长的过程,而客户端IE浏览器等待响应,因此,如果第二个请求到来时,我们的应用程序检查会话值。在我们的应用程序设置会话标志并开始处理之后,我使用Fiddler“Abort Session”中止初始请求,立即自动发送第二个请求(与第一个请求相同),但之前设置的会话值似乎不再存在。

有什么想法?

回答

0

当在你持续不断的过程,第二请求进来是不是overwritting您的当前请求的值,因为它仅存储一个项目?假设两个请求都在同一个会话中进入。

也许考虑存储物品的清单,这样你可以在第二个项目添加到您的标记的列表,然后找到任何前述项目并将其删除。

可能启动第二请求会话之前杀害的请求会话?

我真的不明白你的问题/解决方案所有的好,但希望这有助于。

编辑根据您的评论:

如果不再存在,它可能是由于你的会话超时和擦拭的值,所以第二个将不能够访问它。第二次连接是否在同一会话中进入?在两种情况下比较会话ID。同时检查你的超时。

您也可以存储在您的应用程序缓存此信息,有一个真正的长期到期。如果您只想为每个用户创建一个进程,然后存储您的值,请使用会话ID甚至用户的密钥字典。当同一用户发出第二个请求时,无论会话ID如何,您都可以找到它。只要确保您的流程完成后即可清除。

+0

是的,它是一个项目,但它在设置值之前检查标志是否已存储在会话中。问题是第二个请求进入,由第一个请求设置的标志不再存在。 – user150528 2010-03-09 19:52:18