无 Cookie 会话和 IIS7 导致重定向循环

Posted

技术标签:

【中文标题】无 Cookie 会话和 IIS7 导致重定向循环【英文标题】:Cookieless sessions and IIS7 causes a redirect loop 【发布时间】:2010-10-19 13:21:33 【问题描述】:

我有一个使用无 cookie 会话的 ASP .NET 网站。当使用以下网址向网站发出初始请求时:

http://localhost/site

IE 只显示标准的“Internet Explorer 无法显示网页”消息。 Firefox 更有帮助,它会显示以下消息:

“已超出此 URL 的重定向限制。无法加载请求的页面。这可能是由于 cookie 被阻止造成的。”

我在 global.asax 中添加了一些跟踪,然后我进入了应用程序启动事件,但没有进入会话启动事件。

我没有用浏览器明确阻止任何 cookie,也没有设置任何 http 重定向规则。

该站点在我的开发服务器和 IIS6 下运行良好。

如果我关闭无 cookie 会话,那么在 IIS7 中一切正常。

我可以用最简单的网站重现这一点,即在 Visual Studio 中,文件 > 新网站,然后只需设置 cookieless="true" web.config 设置。

我已经在同事工作站上测试过它并且它可以工作,所以我猜它是 IIS7 某处的一些设置。

有什么想法吗?

【问题讨论】:

【参考方案1】:

嗯,我发现了问题。

我定义了两个指向同一个 dll 的 ISAPI 过滤器:

%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll c:\windows\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll

我删除了第二个,一切都很好。我不知道是什么把副本放在那里,肯定不是我。

【讨论】:

如果可以的话,我会接受这个答案,我该怎么办? 您可以在添加自己的答案几天后接受您的答案。所以现在检查:) 这正是我的问题。我的原因是安装了 .NET Framework 1.1。出于某种原因,它为 1.1 应用程序放置了一个额外的 ISAPI 过滤器,尽管它看起来与 2.0 过滤器相同。 其实这不是.NET 1.1的错。出于某种原因,我有两个用于 .NET 4.0 的 ISAPI 过滤器。即使我的应用程序设置为 2.0,额外的 4.0 也会导致重定向循环。只是想我会分享给未来的读者。 我知道这是在软件更新后发生的,我有类似的情况并通过this修复了

以上是关于无 Cookie 会话和 IIS7 导致重定向循环的主要内容,如果未能解决你的问题,请参考以下文章

每个会话重定向cookie一次

如何在 CURL 重定向上传递 cookie?

mod_rewrite,重定向并设置cookie,防止重定向循环

node.js 中的 Http 请求重定向和 cookie 处理

身份验证后使用 passportjs-google 重定向到原始页面(无会话)

.htaccess 无扩展 url 和 301 重定向循环