我从以前的同事那里接手了 Umbraco(4.7.1 版)安装。托管应用程序的服务器必须关闭,因此我将应用程序迁移到新服务器。
旧服务器运行 IIS6,但新服务器运行 IIS7.5。当我尝试在新服务器上打开站点时,出现“对象引用未设置为对象实例”异常。YSOD 没有提供太多关于出现问题的信息(见下文)。
当我在 Visual Studio 中本地运行应用程序时,它就像一个魅力。你们中有人知道出了什么问题吗?
我可以建议您从 Umbraco 4.7.1 存档中获取一个干净的 web.config 并首先尝试。您可以从这个非官方存档http://code.leekelleher.com/umbraco/archive/下载 v4.7.1
将您的自定义内容合并到 web.config 例如连接字符串中,然后尝试一下,因为我怀疑您的 web.config 没有迁移到 IIS7。
几年前我写了一篇关于从 IIS6 > IIS7 迁移 web.config 文件的博客文章,如果上述建议没有帮助,这可能会有用:
http://www.prolificnotion.co.uk/use-appcmd-to-migrate-web-config-from-iis6-to-iis7/
您是否检查过您的应用程序池正在运行正确版本的 .Net Framework?还要检查您正在运行的管道模式 - 我在集成模式而不是经典模式下运行。
在<system.webServer>
您的 web.config 的节点中找到该<modules>
节点并确保您将 runAllManagedModulesForAllRequests 属性设置为 true,因为这已经让我好几次了。它应该看起来像这样:
<modules runAllManagedModulesForAllRequests="true">
我怀疑后一个建议会为你做这件事。
西蒙
只是重复@Pronotion 的一些建议......我偶尔会在新服务器实例上安装应用程序时遇到问题,不得不重新安装 IIS。这是一个命令行:aspnet_regiis -i
同样从您的屏幕截图中,您似乎正在运行一个 .Net 4 应用程序池。据我记得,Umbraco 4.7.1 应该在 .Net 2 Classic 应用程序池下运行。