我们正在将运行在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个域到主服务器的重定向 - 相反,每个域提供相同的内容 - 只是使用不同的主机。 在IIS中定义了14个主机头。它们也在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。
主页和预览页面呈现正常,内容编辑器和其他后端管理功能正常工作。但是,“漂亮的网址”页面不会呈现并导致404错误。
app_data\umbraco.config
并重新发布了整个网站。是否有必要进行4.11.10的全新安装以安装我可能缺少的先决条件?如果是这样,这些先决条件是什么,可以独立于4.11.10安装进行安装吗?
我不知道可能导致这个问题的原因。任何帮助将不胜感激。
答案 0 :(得分:2)
项目组合修复了问题。
Home
节点下的umbraco中定义了主机名。我删除了Host
节点上umbraco中定义的主机名。主机名仍然存在于IIS中。config\umbracoSettings.config
中
<useDomainPrefixes>
设为false
<addTrailingSlash>
设为false
web.config
设置umbracoUseDirectoryUrls
至true
/
EN
请求解析到config\UrlRewriting.config
节点的umbraco主机名的副作用
醇>
<add name="SiteRootHack"
virtualUrl="^~/$"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/home.aspx"
ignoreCase="true" />
答案 1 :(得分:0)
你应该检查几件事,但如果你得到Umbraco的404页面,你可以访问后台,那么这至少是一个好兆头!
要做的第一件事是检查〜/ app_data / logs /的Umbraco日志,看看Umbraco在每个请求中记录了什么,如果有的话。然后检查:
如果可能,您还应该从NuGet创建一个Umbraco项目,这样就可以在项目中安装有关DLL依赖项的所有内容。此外,不需要在如此多的步骤中进行升级。应该可以从4.5升级到4.7然后直接升级到4.11。
最后,检查Umbraco版本中的重大变化。例如,GetProperty("propertyName").Value
在一个版本中返回string
,然后在后一个版本4.11中更改为object
,因此这显然会导致NullReference
例外,这可能是无意中造成404的。如果不进行一些代码更改,您就不可能像这样升级。