Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Global.asax应用程序_BeginRequest不启动,除非物理文件存在-404_Asp.net_.net_Iis_Url Rewriting_Global Asax - Fatal编程技术网

Asp.net Global.asax应用程序_BeginRequest不启动,除非物理文件存在-404

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被正确

我在Global.asax中使用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个池未工作。然后我改成了经典版,又回到了集成版,现在它开始工作了。