SessionState过期文件不存在c#

本文关键字:不存在 文件 过期 SessionState | 更新日期: 2023-09-27 17:58:43

我有一个使用web表单并使用sessionstate的网页,即cookieless。由于它是cookieless,所以会话被放在url中。当用户复制并粘贴我们的url,并试图在sessionstate过期后访问他们的页面时,就会出现问题。我得到的不是.net重新创建会话或重定向到新会话,而是以下错误:文件(s(13vd3ucbipwc0b2m5d3gfvu)/page.aspx"不存在。

正如您所看到的,看起来iis正在寻找实际的文件,而没有意识到url中有一个会话。我看到了以下文章http://msdn.microsoft.com/en-us/library/aa479314.aspx并且确实检查了iis中是否存在正确的aspnet_filter.dll,并且它们已正确列出。

这就是我在web配置中调用会话状态的方式,请注意,出于安全目的,我删除了数据库连接:

sessionState mode="SQLServer" timeout="60" cookieless="true" regenerateExpiredSessionId="true"

请注意,这只是一个页面,用户会话是在page_init上创建的。

SessionState过期文件不存在c#

我发现了这个问题,想为其他有同样问题的人回答这个问题。我的url中的会话看起来像(S(13vd3ucbipwc0b2m5d3gfvu)),但用户对如何获得它有一些了解(S(13vd3 ucbipwc 0b2m5d))。如果你注意到唯一的区别是,正常链接中的S是大写的,而有问题的链接有一个小写的S。对此有两个简单的修复方法,在全局中,我刚刚写了一些代码,可以用大写的S再次重定向到页面。你也可以使用iis重写工具在会话中查找小写的S,并重写为大写的