HTTP错误404.0 - 未找到,错误代码0x80070002;在IIS中路由无扩展名URL

时间:2015-12-28 14:13:22

标签: asp.net iis routing url-routing asp.net-routing

我阅读了很多关于它的文章并进行了测试,但我的问题仍然没有得到解决

HTTP Error 404.0 - Not Found

我使用UrlRoutingModule来拥有友好的网址

global.asax.cs

routes.MapPageRoute("", "HOME", "~/Default.aspx");

在web.config中:

<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>`

在IIS中,应用程序池处于经典模式

测试以下解决方案:

  • 添加到web.config <modules runAllManagedModulesForAllRequests="true">
  • 添加到web.config <validation validateIntegratedModeConfiguration="false" />
  • 添加到web.config <remove name="UrlRoutingModule"/>
  • 启用IIS服务“HTTP重定向”
  • 启用IIS服务“HTTP错误”
  • 启用IIS服务“HTTP日志记录”
  • 启用IIS服务“静态内容压缩”
  • 启用IIS服务“动态内容压缩”
  • 启用IIS服务“请求监视器”
  • 重新安装IIS!

注1:

路由处理扩展的网址,例如,当我将global.asax.cs中的路由规则更改为

routes.MapPageRoute("", "HOME.aspx", "~/Default.aspx");

网址“mysite / HOME.aspx”正常工作

注2:

这种情况,确切地说这个配置正在另外两台服务器上运行!

注3:

在此服务器上,路由由set application pool工作到integrated mode + <validation validateIntegratedModeConfiguration="false" />

1 个答案:

答案 0 :(得分:1)

这是在黑暗中的一点点,因为你提到这个配置在某些服务器上工作但在其他服务器上工作。

正如this post中所述,Microsoft有released a hotfix for的错误,您可能需要检查服务器以查看它们是否已针对KB980368进行了一致修补。

正如文章所指出的那样,问题只适用于.NET 4.0。由于您(显然)使用的是.NET 3.5,因此您可能需要仔细检查应用程序池配置,以确保它们始终设置为.NET 2.0和web.config settings to ensure you are targeting .NET 3.5

  

请注意Microsoft officially ended support for .NET 4.0 on January 12, 2016,但对.NET 3.5 SP1的支持将继续,直到您托管它的操作系统的支持结束。