代码之家  ›  专栏  ›  技术社区  ›  mackenir

我可以阻止ASP.NET返回“找不到资源”吗?

  •  2
  • mackenir  · 技术社区  · 16 年前

    我已经在我的web应用程序中安装了httpmodule,它将处理具有给定文件扩展名的所有请求。

    我希望asp.net处理所有具有扩展名的请求,而不管磁盘上是否有底层文件。因此,当我将扩展名添加到“应用程序扩展名映射”时,我取消选中“验证文件存在”复选框。

    但是,这只是将文件检查转移到asp.net,而不是iis,所以在请求具有文件扩展名的url时,我只得到一个不同的错误页。

    有没有办法抢占这个asp.net文件来检查和拦截请求?

    2 回复  |  直到 16 年前
        1
  •  1
  •   William    16 年前

    您需要创建httphandler而不是httpmodule。将httphanlder扩展添加到web配置中,然后该扩展对服务器的所有请求都将定向到处理程序。

    <httpHandlers>
        <add verb="*" path="*.ext" type="Domain.Model.MyHttpHandler" />
    </httpHandlers>
    

    然后,处理者可以随心所欲地提供服务。如果是未知的文件类型,则需要通知IIS该类型,并且该类型由ASP.NET处理。

    这是一个不错的 quick start guide

        2
  •  1
  •   Banzor    16 年前

    在global.asax中,您可以处理beginrequest事件。

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
    
    }
    

    您很可能希望修改response对象,以确保可以相应地提供自定义页或重定向。

    如果项目中没有global.asax,请转到“添加新项”>“全局应用程序类”