2

假设我在 IIS7 中有一个虚拟文件夹 /topFolder/,在该文件夹中可以有任何可以在浏览器中显示的文件(xml、html、swf、doc 等 - 从 IIS 角度来看通常是“非托管”资源)。在授予打开文件夹下任何文件的请求权限之前,我需要检查一些会话变量,以查看用户是否拥有相关子文件夹和文件的“许可证”。

我尝试使用 IHttpModule 和 IReadOnlySessionState 接口实现一个模块,但是当文件是“静态”而不是 IIS 管理(如 aspx、ashx 等)时,AcquireRequestState 事件中的 Session 始终为空。

如果我使用自定义 HttpHandler,我会得到会话,但我还需要实现内容如何发送到响应。编辑:由于用户没有下载文件,我只希望 IIS 像使用它的 StaticFileModule 一样提供文件。Handler/Module 应该是一个 StaticFileModuleWithAuthorizationHook...

所以我真的想做以下事情: 1. 对于请求 /topFolder/* :检查会话和许可证等 a)如果可以,继续提供文件 b)如果不可以,中断请求,或者只是发送 FORBIDDEN 作为响应。

希望有人可以提供帮助。

4

1 回答 1

1

您应该能够通过 httphandler 处理此问题,简单的方法是使用内置方法将文件发送给有权访问的用户。

本文(在底部)展示了如何执行此操作的示例。

于 2009-03-09T13:53:39.380 回答