【问题标题】:umbraco giving 404 on all pages except root. preview works fineumbraco 在除 root 之外的所有页面上给出 404。预览效果很好
【发布时间】:2013-12-31 01:25:28
【问题描述】:

背景

我们正在将在 Win2k8r2 / IIS7.5、SQL2k8r2 上运行的 umbraco 4.5.2 站点升级到 umbraco 4.11.10。鉴于执行升级所需的步骤数,我们选择离线进行,然后用更新的数据库和文件系统替换生产。 我们进行了离线升级以将其升级到 4.11.10 (4.5.2 -> 4.6.1 -> 4.7.2 -> 4.8.1 -> 4.9.1 -> 4.11.10)。这些升级影响了数据库和文件系统。

旧系统有 14 个域解析到 1 个 umbraco 站点。这些域只是别名,并且没有根据要求设置从 13 个域到主域的重定向 - 相反,每个域提供相同的内容 - 只是使用不同的主机。 14 个主机头在 IIS 中定义。它们也在 umbraco 中定义如下:

Content   (folder)
    EN    (language folder)
        Home   (Hostnames are defined here)
        Top Level 1 (also a child of EN)
        Top Level 2 (also a child of EN)

问题

当我们在 localhost(在 IIS 中定义但不是 umbraco 中的主机名)下进行测试时,站点会按预期呈现内容。但是,当我们使用在 IIS 和 umbraco 主机名中定义的主机之一进行测试时(在将其设置为在 hosts 文件中解析为 127.0.0.1 之后),我们能够访问主页,但所有其他页面都会导致404.

主页和预览页面呈现良好,内容编辑器和其他后端管理功能工作正常。但是,“nice url”页面不会呈现并出现 404 错误。

我尝试了什么

  • 我已删除 app_data\umbraco.config 并重新发布了整个网站。
  • 在 IIS 中创建一个新网站。仍然在站点根目录以外的页面上获得 404。
  • 查看了 umbracoLog 表。没有看到任何关于 404 的内容或任何与升级前后有关的异常情况,但我不是 umbracoLog 专家。

是否需要全新安装 4.11.10 才能安装我可能缺少的先决条件?如果是这样,这些先决条件是什么?是否可以独立于 4.11.10 安装来安装它们?

我不知道是什么导致了这个问题。任何帮助将不胜感激。

【问题讨论】:

  • 您知道最近有什么变化吗?最近升级等?
  • @DouglasLudlow,请参阅上面的问题更新。
  • 您可能遗漏了一些应该在升级过程中添加的配置设置,或者在 gac 或其他方式中可能存在一些在脱机/登台服务器上可用的程序集'不存在于生产服务器上。您可能希望将当前配置文件与干净的 4.11.10 安装中的配置文件进行比较。
  • 您能在事件查看器中发现任何错误吗?如果加载 404 页面,可能是因为显示了默认错误页面。如果出现 500 错误,则会出现相同的默认页面,看起来像 404 错误。否则看一下 notfound handlers 配置文件(config/404handlers.config),一一删除看看会发生什么。

标签: iis configuration umbraco upgrade


【解决方案1】:

项目组合解决了问题。

  1. 主要问题是在Home 节点下的umbraco 中定义了主机名。我删除了 Host 节点的 umbraco 中定义的主机名。主机名仍然存在于 IIS 中。
  2. config\umbracoSettings.config
    1. <useDomainPrefixes>设置为false
    2. <addTrailingSlash> 设置为false
  3. web.config 中将umbracoUseDirectoryUrls 设置为true
  4. 最后,通过将以下内容添加到 config\UrlRewriting.config 来修复删除 umbraco 主机名导致对 / 的请求解析到 EN 节点的副作用

 <add name="SiteRootHack"
      virtualUrl="^~/$"
      rewriteUrlParameter="ExcludeFromClientQueryString"
      destinationUrl="~/home.aspx"
      ignoreCase="true" /> 

【讨论】:

    【解决方案2】:

    您应该检查几件事,但如果您正在获取 Umbraco 的 404 页面并且您可以访问后台,那么这至少是一个好兆头!

    首先要做的是在 ~/app_data/logs/ 检查 Umbraco 的日志,以查看 Umbraco 在每个请求上记录的内容(如果有的话)。然后检查:

    • 你在服务器上安装MVC3和4了吗?
    • 应用程序是否在 .Net 4 集成应用程序池中运行?
    • 您是否对正确的文件夹应用了“写入”权限?
    • 尝试删除 Umbraco 后台的所有域设置,如果站点是基本安装,这些几乎是多余的。

    如果可能,您还应该从 NuGet 创建一个 Umbraco 项目,这样您需要的与 DLL 依赖项有关的所有内容都安装在项目中。此外,应该不需要在这么多步骤中进行升级。应该可以从 4.5 升级到 4.7,然后直接升级到 4.11。

    最后,检查 Umbraco 版本中的重大更改。例如,GetProperty("propertyName").Value 在一个版本中返回 string,然后在可能的 4.11 版本中更改为 object,因此这显然会开始导致 NullReference 异常,这可能会无意中导致 404。您不太可能无需进行一些代码更改就可以像这样进行升级。

    【讨论】:

    • 我在带有 CE 数据库的新服务器上进行了全新的 4.11.10 安装,并且能够创建和查看一些页面,因此看起来前提条件都在那里。但是移植的站点仍然提供 404。是的,appPool 在 .net4 集成中运行。是的,写权限。在 mvc3/4 上没有。如何在 umbraco 中启用详细请求日志记录?
    • 您需要安装 MVC 3 & 4。最简单的方法是通过 Web 平台安装程序 microsoft.com/web/downloads/platform.aspx
    • 我能够在我的测试环境中重现该错误。安装 MVC3 和 MVC4 没有效果。问题仍然存在。
    猜你喜欢
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 2021-03-02
    • 2016-06-07
    • 2011-10-25
    • 1970-01-01
    相关资源
    最近更新 更多