我在Global.asax中使用URL重写(HttpContext.Current.RewritePath(...)
),因此物理文件大多不存在。
一切正常,直到我不得不从IIS(8.5)中删除网站并再次添加它。
现在我的每个请求都找不到404。示例http://localhost/site/article123
并且Global.asax Application_BeginRequest
事件甚至没有解雇。
但是,如果我在文件夹/site/article123
中添加空的default.aspx文件,则一切正常,URL正确地重写。
文件没有改变,所以它应该是IIS配置的问题。
我在web.config中有以下内容:
<modules runAllManagedModulesForAllRequests="true">
IIS中的项目设置为具有应用程序池.NET v2.0 Classic的应用程序
编辑:
IIS 8.0中的相同故事
答案 0 :(得分:8)
问题出在Managed Pipeline Mode
设置为classic
。通过将应用程序池从classic
更改为integrated
来解决问题,从.NET v2.0 Classic
切换到.NET v2.0
。
据我所知:在classic
模式下,IIS正在管理请求,而在intergated
模式下,传入的IIS请求会映射到ASP.NET引擎。
有关管道模式的更多信息:What is the difference between 'classic' and 'integrated' pipeline mode in IIS7?
答案 1 :(得分:0)
您需要在IIS 8.5下安装ReWrite Module
使用Web Installer Platform进行安装。