【发布时间】:2010-09-25 05:51:39
【问题描述】:
我们有一个用户可以通过多种方式点击的搜索结果页面。 90% 的方式将设置一个“搜索条件”会话对象,结果页面将使用它来检索搜索结果。
当未找到会话对象时,我们通常会向用户显示“无效搜索”消息,并为他们提供指向主搜索页面的链接。
例外情况是用户点击将搜索结果页面作为默认页面的网页(我们使用 .NET 的主题为我们的网站提供私有标签,并使用我们的附属公司的颜色和徽标对其进行蒙皮)。如果搜索结果页面是站点的默认页面,则在没有会话条件时执行特殊搜索。
这在我们的测试中运行良好,但我们希望处理一个边缘情况:当会话到期而某人在搜索结果页面上(来自搜索页面)然后他们点击下一页的结果,他们将得到这个特殊的搜索,而不是“过期会话”消息。
这是我们使用的基本格式,其中 searchCriteria 是从会话中设置的。
if (searchCriteria == null)
{
if (/*Check if this is the default url for this site*/)
{
//Preform special search
}
else
{
//Display 'session expired message'
}
}
有没有一种方法可以检查内部 if 块中的 Session 以查看用户的会话是否由于现有会话到期而成为新会话?还是浏览器只是在会话 cookie 过期时丢弃它们?
浏览器有区别吗?有些人是否将过期的会话 cookie 返回到服务器,而其他人会在过期时将其删除?还是一致的?
【问题讨论】:
标签: c# asp.net .net-3.5 session