编写自定义IIS目录列表模块

本文关键字:列表 模块 IIS 自定义 | 更新日期: 2023-09-27 17:58:12

我目前正在寻找用自定义版本替换IIS 7.5中内置的"DirectoryListingModule",以使列表更美观。问题是,我似乎找不到任何关于自己编写托管模块的主题。我已经阅读了微软网站上的IIS 7模块/处理程序教程,这些教程虽然非常基础,但很有帮助。我也看到了Mike Volodarsky的实现,但遗憾的是没有提供源代码。我能找到的唯一其他资源可以链接到Volodarsky的博客或微软页面(也是Volodarski写的!)。我想我想说的是,我不知道如何从微软教程中的基本模块转到Volodarsky示例的目录列表功能。

如果有人能提供一个关于如何解决这个问题的提示,我将不胜感激。此外,如果有任何不清楚的地方,请告诉我(我写得很糟糕)。

提前感谢:)

编辑-为了清楚起见,我意识到我有很多书要读,不想找人帮我做。

编写自定义IIS目录列表模块

Mike Volodarsky的实现非常简单:

您创建了一个模块,用于拦截对应用程序中"目录"url的请求。该模块将创建一个表示目录结构的对象集合,并将其保存在httpcontext 中

然后加载一个aspx页面,该页面绑定到httpcontext保存的内容。

我不明白你要什么?

如果你不能开发该模块,你可以使用Mike Volodarsky的模块,只需自定义aspx页面。。。

ASP.NET应用程序中的PreRequestHandlerExecute事件用于处理和替换默认IIS处理程序。

你有两个选择:

  1. 使用Global.asax文件中的Application_PreRequestHandlerExecute事件
  2. 编写自定义IHttpModule并使用OnPreRequestHandlerExecute事件

无论您喜欢使用哪种方法,都必须确保请求是一个目录,而不是文件、其他注册的处理程序等等。使用以下代码进行检查:

if (!Directory.Exists(context.Request.PhysicalPath))
    return;