如何将IIS 7的URL重写规则迁移至Windows Server 2019的IIS 10
解决Windows Server 2008 IIS7到2019的URL重写规则迁移问题
问题回顾
- 旧服务器环境:Windows Server 2008 + IIS7,搭载SQL Server 2008~2019、Visual SVN Server;新服务器为Windows Server 2019,需迁移旧IIS的全部URL重写规则
- 尝试操作:用
appcmd add backup [name]备份旧IIS配置,复制到新服务器后执行appcmd restore backup [name]恢复,导致IIS无法启动,报错:Creating an instance of the COM component with CLSID FROM the IClassFactory failed due to the following error: 800700b7 - 后续操作:删除
\inetsrv\config\schema下的NetFx40_IIS_schema_update.xml和NetFx45_IIS_schema_update.xml后,IIS可启动但状态异常:仅URL重写规则迁移成功,站点、应用池设置丢失,无法添加或重启站点
针对性解决方案
方案1:单独迁移URL重写规则(推荐,规避版本兼容冲突)
全量备份恢复会触发IIS7与IIS10的配置 schema 冲突,单独导出导入重写规则更稳妥:
- 旧服务器导出规则
- 打开IIS管理器,选中目标站点,双击「URL重写」
- 右侧「操作」面板点击「导出规则」,保存为XML文件(如
rewrite_rules.xml)
- 新服务器导入规则
- 先确认新服务器安装了URL重写模块2.0(Win2019默认未预装,需在服务器管理器-添加角色功能-Web服务器-应用开发中勾选安装)
- 打开IIS管理器,选中对应站点,双击「URL重写」
- 右侧「操作」面板点击「导入规则」,选择导出的XML文件完成导入
- 批量导出所有站点规则
若要一次性导出所有站点的重写规则,旧服务器执行命令:
新服务器执行命令导入:appcmd list config /section:system.webServer/rewrite /xml > all_rewrite_rules.xml
注意:执行前需确保新服务器站点结构与旧服务器一致,避免规则匹配失效。appcmd set config /in < all_rewrite_rules.xml
方案2:修复全量备份后的IIS异常
若已执行全量备份导致异常,按以下步骤修复:
- 恢复缺失的schema文件
- 从同版本Windows Server 2019服务器复制
NetFx40_IIS_schema_update.xml和NetFx45_IIS_schema_update.xml到C:\Windows\System32\inetsrv\config\schema目录 - 或通过重新安装.NET Framework 3.5/4.8组件恢复文件(服务器管理器-添加角色功能-勾选对应.NET版本)
- 从同版本Windows Server 2019服务器复制
- 重置IIS基础配置
执行命令重置IIS默认配置:
之后手动重新配置站点、应用池,再按方案1导入URL重写规则。appcmd reset config
关键注意事项
- IIS7与IIS10的配置schema存在差异,全量备份恢复极易引发COM组件注册冲突(800700b7错误多因组件版本不兼容或重复注册导致)
- 迁移前需确认新服务器安装了旧服务器对应的IIS模块(如ASP.NET、URL重写等)
- SQL Server、Visual SVN Server需单独迁移:SQL用备份还原+迁移登录账户,Visual SVN直接复制仓库目录后重新配置服务
内容的提问来源于stack exchange,提问作者ayaayy7643
相关产品推荐
相关产品推荐

