【问题标题】:HTTP Error 404.0 - Not Found, Error Code 0x80070002; routing extensionless url in IISHTTP 错误 404.0 - 未找到,错误代码 0x80070002;在 IIS 中路由无扩展名 url
【发布时间】:2016-04-02 09:34:12
【问题描述】:

我看了很多关于它的文章并测试过,但我的问题仍然没有解决

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

注1:

路由适用于扩展 URL,例如当我将 global.asax.cs 中的路由规则更改为

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

网址“mysite/HOME.aspx”有效

注2:

这种情况下,这种配置在另外 2 台服务器上运行!

注3:

在此服务器上,路由通过将应用程序池设置为 integrated mode + &lt;validation validateIntegratedModeConfiguration="false" /&gt; 起作用

【问题讨论】:

  • 您是否尝试过清除 ASP.NET/IIS/Browser 缓存?您可能会获得旧版本的网站
  • @cFrozenDeath 是的,即使我使用了其他浏览器!

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


【解决方案1】:

这有点摸不着头脑,因为您提到此配置在某些服务器上有效,但在其他服务器上无效。

this post 中所述,Microsoft 有released a hotfix for 的 IIS 中存在一个错误,您可能需要检查服务器以查看它们是否已针对 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 的支持将继续,直到对您托管它的操作系统的支持结束为止。

【讨论】:

  • 非常感谢,我的问题解决了。我奖励你 50 赏金,很高兴。
  • 没问题。您可能想提及我建议的哪种解决方案是正确的,以防其他人将来遇到此问题。
  • 哦,是的,对不起。首先你的解决方案,解决了我的问题。 iis bug 的修补程序
猜你喜欢
  • 2016-03-08
  • 2011-08-06
  • 2022-10-24
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多