我已经在我的网络应用程序中安装了一个HttpModule,它将处理具有给定文件扩展名的所有请求。
我希望ASP.NET能够使用扩展来处理所有请求,无论磁盘上是否存在基础文件。因此,当我将扩展添加到“应用程序扩展映射”时,我取消选中“验证文件是否存在”复选框。
但是,这只是将文件检查转移到ASP.NET而不是IIS,所以在请求带有文件扩展名的URL时,我只会得到一个不同的错误页面。
有没有办法抢占这个ASP.NET文件检查并拦截请求?
答案 0 :(得分:1)
在Global.asax中,您可以处理BeginRequest事件。
protected void Application_BeginRequest(object sender, EventArgs e)
{
}
您很可能希望修改Reponse对象,以确保您可以提供自定义页面或相应的重定向。
如果您的项目中没有Global.asax,请转到添加新项>全球申请类
答案 1 :(得分:1)
您需要创建一个HttpHandler而不是HttpModule。将HttpHanlder扩展添加到您的Web配置,然后所有对该扩展的服务器请求将被定向到您的处理程序。
<httpHandlers>
<add verb="*" path="*.ext" type="Domain.Model.MyHttpHandler" />
</httpHandlers>
然后,处理程序可以提供任何想要的东西。如果它是一个未知的文件类型,您将需要建议IIS的类型,并由ASP.NET处理。
这是一个不错的quick start guide