通过ASP.NET中的HttpModule处理静态文件

时间:2009-06-12 21:37:02

标签: asp.net iis static httphandler httpmodule

我在网站文件夹中有statiс文件,但需要检查每个文件的权限。 我决定将HttpModule用于此目的。

ASP.NET接收所有http请求(我使用通配符映射)和

算法如下:

  1. HttpModule收到请求
  2. HttpModule检查权限
  3. 如果拒绝访问,则答案为“禁止访问”。如果一切正常,那么httpModule的方法就会返回。
  4. DefaultHttpHandler自动用于处理静态文件的请求
  5. 问题是DefaultHttpHandler不够有效(它不使用文件缓存等)。但IIS(没有ASP.NET)可以很好地处理静态文件。

    我想要的只是在检查后让IIS提供静态文件。 有没有办法实现它?

2 个答案:

答案 0 :(得分:2)

如果你正在使用IIS7,那么是的,这很容易。在集成模式下,所有请求都通过托管管道。让IIS提供文件,但添加一个HttpHandler来进行检查。或者您可以使用ASP.NET提供的一种授权方法。

答案 1 :(得分:1)

我有一个可用于在IIS 6中传输文件的解决方案。它可以完成诸如可恢复下载,客户端缓存(etag& expires)和服务器端缓存等所有好处。

http://code.google.com/p/talifun-web/wiki/StaticFileHandler

在提供文件之前,应该很容易扩展到包括授权。