Sitecore 9 Update 1安装后Web.Config报MachineToApplication错误
这个错误我碰到过好多次,虽然你说安装程序已经创建了应用程序目录,但大概率是IIS的实际配置没跟上,或者存在嵌套配置的问题。下面是一步步的排查和解决方法:
第一步:确认IIS目录的应用程序标记
打开IIS管理器,定位到C:\inetpub\wwwroot\xp0.sc这个目录:- 如果右键菜单里有「转换为应用程序」,说明当前目录还没被设为应用程序,点击这个选项,选择对应的应用程序池(一般是SIF安装时自动创建的Sitecore专用池),确认后保存。
- 如果已经是应用程序,右键选择「管理应用程序」→「高级设置」,核对两个关键点:应用程序池是否正确匹配,物理路径是不是精确指向
C:\inetpub\wwwroot\xp0.sc,有时候路径可能被意外修改。
第二步:排查嵌套的web.config文件
这个错误另一个常见原因是子目录里存在独立的web.config,而且里面包含了只能在应用程序根目录使用的节点(比如<authentication>、<sessionState>这类,也就是你错误里提到的allowDefinition='MachineToApplication'的节)。
遍历xp0.sc下的所有子目录,找到这类web.config,要么把里面的敏感节点移到根目录的web.config里,要么把子目录也配置成独立的应用程序(这个得根据你的业务需求来决定,不建议随便嵌套应用程序)。第三步:强制刷新IIS配置
不管做了上面哪一步,都建议重启一下IIS站点,或者直接在命令行运行iisreset命令,确保配置完全生效。之后再访问站点,看错误是否消失。第四步:核对SIF安装日志
有时候安装程序表面显示成功,但实际创建应用程序的步骤可能静默失败了。找到SIF的安装日志(一般在安装路径或者指定的日志文件夹里),搜索「application pool」「virtual directory」相关的条目,看看有没有报错信息,这能帮你定位是不是安装过程本身的问题。
另外,你可以打开web.config的第213行,看看具体是哪个节点触发的错误,比如如果是<authentication>,那这个节点确实只能放在应用程序根的web.config里,这也能反向验证你的目录是否真的被设为了应用程序根。
内容的提问来源于stack exchange,提问作者Andrew Forber

