我目前正在寻找用自定义版本替换IIS 7.5中内置的"DirectoryListingModule",以使列表更美观。问题是,我似乎找不到任何关于自己编写托管模块的主题。我已经阅读了微软网站上的IIS 7模块/处理程序教程,这些教程虽然非常基础,但很有帮助。我也看到了Mike Volodarsky的实现,但遗憾的是没有提供源代码。我能找到的唯一其他资源可以链接到Volodarsky的博客或微软页面(也是Volodarski写的!)。我想我想说的是,我不知道如何从微软教程中的基本模块转到Volodarsky示例的目录列表功能。
如果有人能提供一个关于如何解决这个问题的提示,我将不胜感激。此外,如果有任何不清楚的地方,请告诉我(我写得很糟糕)。
提前感谢:)
编辑-为了清楚起见,我意识到我有很多书要读,不想找人帮我做。
Mike Volodarsky的实现非常简单:
您创建了一个模块,用于拦截对应用程序中"目录"url的请求。该模块将创建一个表示目录结构的对象集合,并将其保存在httpcontext 中
然后加载一个aspx页面,该页面绑定到httpcontext保存的内容。
我不明白你要什么?
如果你不能开发该模块,你可以使用Mike Volodarsky的模块,只需自定义aspx页面。。。
ASP.NET应用程序中的PreRequestHandlerExecute
事件用于处理和替换默认IIS处理程序。
你有两个选择:
- 使用
Global.asax
文件中的Application_PreRequestHandlerExecute
事件 - 编写自定义
IHttpModule
并使用OnPreRequestHandlerExecute
事件
无论您喜欢使用哪种方法,都必须确保请求是一个目录,而不是文件、其他注册的处理程序等等。使用以下代码进行检查:
if (!Directory.Exists(context.Request.PhysicalPath))
return;