如何在使用IHttpHandler下载时阻止导航被阻止?

问题描述:

我正在使用IHttpHandler来处理我的下载。它流出文件。 但是,此处理程序需要将令牌与存储在会话中的令牌进行比较。因此,它使用IRequiresSessionState如何在使用IHttpHandler下载时阻止导航被阻止?

现在的问题是:只要IRequiresSessionState在那里,用户不能继续浏览网站,而下载正在运行。

有没有比使用处理程序,这将解决我的问题(我仍然需要IIS6兼容,但如果只有IIS7的解决方案,它仍然会好起来)不同的方法?

请注意,我无法更改会话检查。我必须访问会话。

.NET和IIS中有很多东西我还没有发现,也许有一些功能可以使用。

难道你不能只是重定向请求到另一个处理器与URL中的令牌,以便它不需要再访问会话?

+0

好主意,但我怎么能确定其他处理程序重定向到我而不是一些用户试图欺骗安全系统? – Krumelur 2011-04-08 15:06:28

+0

是的,这是一个很好的观点。但是,如果您有GUID作为数据库对象的标识符,这不是问题,您可以让用户猜测您拥有的GUID - 他们将无法:) 但是,如果此令牌只是一个整数值,我的解决方案不会显然是安全的 - 好奇的用户可能想在URL中尝试不同的值:( – 2011-04-08 16:01:01