除非物理文件存在,否则Global.asax Application_BeginRequest不会触发 - 404

Ser*_*pov 3 .net asp.net iis url-rewriting global-asax

HttpContext.Current.RewritePath(...)在Global.asax中使用URL重写(),因此物理文件大多不存在.一切都工作正常,直到我不得不从IIS(8.5)中删除网站并再次添加它.

现在我发现每个请求都找不到404.示例http://localhost/site/article123 和Global.asax Application_BeginRequest事件甚至没有触发.

但是,如果我将在文件夹中添加空的default.aspx文件,/site/article123一切正常,URL正确地重写.

文件没有改变,所以它应该是IIS配置的问题.

我在web.config中有以下内容:
<modules runAllManagedModulesForAllRequests="true">

IIS中的项目设置为应用程序池.NET v2.0 Classic的应用程序

编辑:
IIS 8.0中的相同故事

Ser*_*pov 8

问题是Managed Pipeline Mode设置为classic.通过更改应用程序池切换classic到对问题进行排序.integrated.NET v2.0 Classic.NET v2.0

据我所知:在classic模式IIS中管理请求,而在intergated模式下传入的IIS请求映射到ASP.NET引擎.

有关管道模式的更多信息:IIS7中的"经典"和"集成"管道模式有什么区别?