我正在尝试使用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系统。你的想法!
答案 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中的处理程序部分留空。