【问题标题】:Accessing ASP.Net MVC site without www throws an error在没有 www 的情况下访问 ASP.Net MVC 站点会引发错误
【发布时间】:2009-02-18 18:26:49
【问题描述】:

当我在直播盒上试图找出问题所在时,这让我做了一些噩梦!

如果有人使用完整 URL http://www..net 访问我们的 ASP.Net MVC 网站,一切正常。如果他们访问:http://.net,则会显示我们的自定义错误页面。在我们将站点移动到 MVC 之前,这曾经可以正常工作。

我们在 Global.asax 中确实有一个 Application_OnError 事件,但我知道在这种情况下没有受到影响,因为我登录到事件日志并且没有发生。

如果我在 web.config 中关闭自定义错误,该网站的行为正确!

我们目前正在使用 MVC Beta。编辑:我们在 IIS6 上运行并使用 MVC 路由来获取友好的 URL。

这是不可能在本地测试的,这很令人沮丧,因为它只会在没有 www 的情况下发生。不知是不是跟路由有关……

谢谢!

【问题讨论】:

  • 您可能想在调试器中跟踪它以查看实际发生的情况。
  • 嘿,IIS6(很抱歉错过了重要的一点)和 IIS6 让我们在让事情正常运行时有些头疼。只能在现场获得这种行为,因此无法调试。
  • 我认为值得一提的是,这是一个我们正在逐步迁移到 ASP.Net MVC 的 asp.net webform 应用程序。

标签: asp.net-mvc error-handling routing


【解决方案1】:

这个问题在这个阶段太模糊了,我无法给你一个很好的答案,但我会先看看你的 URL 重写 - 你使用的是什么版本的 IIS?如果是 IIS5 或 6,您使用的是 Isapi Rewrite 吗?这可能会干扰您的回复。

至于为什么关闭 customErrors 后错误消失,嗯,我不知道抱歉。

附带说明,如果您关心 Google 排名,您可能需要使用重写工具(如 Isapi Rewrite,我认为它内置于 IIS7)来发送自动重定向(HTTP 301 响应)会将用户从非 www 版本发送到 www 版本。谷歌将这两个网站视为具有重复内容的单独网站,这会削弱您的页面排名。这也将完全避免您正在试验的问题,因为用户只会看到 www 版本。

另外,我不确定 Application_Error 是否真的是处理 ASP.Net MVC 中的错误的最佳方法。对 HandleError Action Filter 做一些研究,看看这是否可以为您提供更好的错误处理方法。查看Scott Gu's post了解更多信息。

我希望这会有所帮助。 干杯, 扎克

【讨论】:

  • 嘿,关于 Google 提示的好建议。我想我同意你的最后一段。我们正在慢慢地将事情转移到 MVC 并尝试遵循最佳实践。我认为当前的问题肯定是一些 MVC 路由最终导致我们的自定义 404 逻辑抛出错误。
【解决方案2】:

我在我的 MVC .net 站点中遇到了同样的问题,但是当我在 IIS 的主机头中同时输入 domain.com 和 www.domain.com 时,它解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 2017-03-14
    相关资源
    最近更新 更多