Asp.net Global.asax应用程序_BeginRequest不启动,除非物理文件存在-404
我在Global.asax中使用URL重写(Asp.net Global.asax应用程序_BeginRequest不启动,除非物理文件存在-404,asp.net,.net,iis,url-rewriting,global-asax,Asp.net,.net,Iis,Url Rewriting,Global Asax,我在Global.asax中使用URL重写(HttpContext.Current.RewritePath(…)),因此物理文件大部分不存在。 一切正常,直到我不得不从IIS(8.5)中删除该站点并再次添加它 现在,我得到404没有找到每一个请求。示例http://localhost/site/article123 和Global.asax应用程序_BeginRequest事件甚至没有触发 但是,如果我将在文件夹/site/article123中添加空的default.aspx文件,URL被正确
HttpContext.Current.RewritePath(…)
),因此物理文件大部分不存在。
一切正常,直到我不得不从IIS(8.5)中删除该站点并再次添加它
现在,我得到404没有找到每一个请求。示例<代码>http://localhost/site/article123
和Global.asax应用程序_BeginRequest
事件甚至没有触发
但是,如果我将在文件夹/site/article123
中添加空的default.aspx文件,URL被正确重写后,一切都开始正常工作
文件没有更改,所以这应该是IIS配置的问题
我在web.config中确实有以下内容:
IIS中的项目被设置为具有应用程序池.NET v2.0 Classic的应用程序
编辑:在IIS 8.0中也有同样的情况您需要在IIS 8.5下安装重写模块
使用Web安装程序平台进行安装。问题是在
托管管道模式下
设置为classic
。通过将应用程序池从.NET v2.0 classic
更改为.NET v2.0
将从classic
切换到integrated
,解决了问题
正如我所理解的:在classic
模式下,IIS管理请求,而在integrated
模式下,传入的IIS请求映射到ASP.NET引擎
有关管道模式的更多信息:我认为不需要安装“重写”模块。正如我所说,我使用HttpContext.Current.RewritePath(…)
进行URL重写,而且它不依赖于重写模块。在任何情况下,我都安装了重写模块,所以这不是问题所在。没有.NETV4.5池这样的东西。有人用这个吗?我有dotnet 4.0 pool和集成版,但应用程序_BeginRequest从未在IIS8上启动。我一直在集成版中。30个池工作,只有1个池未工作。然后我改成了经典版,又回到了集成版,现在它开始工作了。