如何阻止IIS7使用HttpHandlers?

时间:2010-04-01 11:15:33

标签: iis-7 httphandler httphandlerfactory

我正在尝试使用IIS7,只是尝试在global.asax中手动捕获事件并完全跳过ASP httphandler管道。为此,我已经设置了

<httpHandlers>
    <clear/>
</httpHandlers>
<httpModules>
    <clear/>
</httpModules>   

但是当我打电话给服务器时,我得到了一个YSOD

[HttpException]: No http handler was found for request type 'GET'
   at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)
   at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

我需要做些什么才能完全阻止IIS使用传统管道处理事物?我想要的是在HttpApplication.Init中设置事件处理程序和异步方法中的Response.Writes

编辑:我的问题是obv。有点不清楚(对任何浪费时间的人感到遗憾) - 我应该更好地解释,因为我想要做的事情是非常传统的。我试图看看我是否可以使用IIS以类似于node.js的方式处理Web请求 - 通过将处理程序连接到HttpApplication中的异步方法。为此,我需要ASP停止投掷摇摆,因为我不想使用HttpHandlers。目前我最好的办法是为所有请求使用NullHttpHandler,但我想知道我是否可以完全禁用HttpHandler系统。你的想法!

3 个答案:

答案 0 :(得分:0)

您必须重新添加StaticFileHandler:

  <httpHandlers>
    <clear />
    <add verb="*" path="*.jpg" type="System.Web.StaticFileHandler" />
  </httpHandlers>

答案 1 :(得分:0)

你需要IIS。请求在IIS管道中启动,并且对于ASP .NET来处理它,IIS需要能够找到一个http处理程序,它可以将请求传递给。只有在找到合适的处理程序后,它才会将请求传递给ASP .NET。

答案 2 :(得分:0)

我知道它有点旧...但如果你在你的ie。 BeginRequest HttpApplication事件为HttpContext.Current.Handler分配处理程序,您不应该收到此错误,并且可以将web.config中的处理程序部分留空。