2010-10-17 219 views
0

如果我将表单身份验证超时设置为30天(以分钟为单位),并且我已将会话超时设置为5分钟,并且我使用Cookie来保存不同的会话变量。当会话超时时,asp.net或IIS总是发出302并重定向到登录页面? (正在使用HTTP调试它把一个“物体移动到这里”消息)asp.net重定向到登录页面

我检查的所有网页上的所有page_init s中的会话,因为他们都来自一个共同的Page类继承,如果我找到一个错误的会话我加载来自上面提到的cookie的会话变量。

我的问题是,谁或重定向到登录页面?

我已经在IIS6 & IIS7上测试过,结果相同。

我在每一个重定向语句中都加上了断点,并且他们从未被解雇,因此我断定别的东西正在发布这些重定向。

进一步debbuging揭示了以下内容:

型“System.Threading.ThreadAbortException”的第一次机会异常出现在mscorlib.dll 型“System.Threading.ThreadAbortException”的异常出现在mscorlib.dll但没有在用户代码处理

但我想这是很自然的,因为它发出无论如何重定向。

回答

1

这是表单认证。如果您未通过身份验证,则身份验证会将您发送至登录名。

看到:http://msdn.microsoft.com/en-us/library/ff647070.aspx

为什么你不能调试的原因是该窗体身份验证接受请求进入您的代码之前。

它也涵盖在this文章

编辑

从上面的第二个链接的结尾:

问题情景:形式 认证可在 之前超时在 配置文件中设置的超时属性值如果 认证券是man生成的 , 的超时属性将会覆盖配置文件中设置的值 。 因此,如果该值小于 配置文件中的值 表单身份验证票证将 到期配置文件 超时属性值和 反之亦然。例如,我们假设 超时属性为 ,在Web.config文件中设置为30,并且 票证的过期值为 设置为20分钟。在这种情况下, 表单身份验证票将在012分钟后过期,并且用户 必须在此之后再次登录。

+0

但是不应该对它进行身份验证,因为我正在使用BIG超时值?我如何解决这个问题? – 2010-10-17 15:28:20

+0

尝试增加会话超时,表单身份验证使用会话不仅仅是cookie。 – 2010-10-17 15:39:29

+0

问题是,我们因为随机原因获得了空会话变量,因此我使用的cookie在持续会话变量 – 2010-10-17 15:59:42