背景
公司 Exchange 2016 双节点 DAG 环境,MAIL01 节点因 IIS 模块加载异常导致 OWA/ECP 500 错误。虽然 IIS 问题修复后服务恢复,但数据库副本和内容索引状态异常,需要进一步处理。
故障基本信息
- 节点名称: HQ-EX16MAIL01
- 故障时间: 2026-04-23
- 受影响范围:
- 客户端收发: 邮箱客户端无法连接服务器,无法收发邮件。
- Web端访问: 访问 OWA/ECP 登录页面时报 500 错误。
- 管理端连接: Exchange Management Shell (EMS) 无法连接本地节点。
故障现象描述
应用程序日志 (Event Log)
- 事件 ID: 1310 (ASP.NET 4.0)
- 异常类型: ConfigurationErrorsException
- 错误信息: 未能加载文件或程序集"HttpSessionModule, Version=5.2.0.0…“或它的某一个依赖项。系统找不到指定的文件。
命令行报错
- 现象: EMS 启动时无法连接至本地 MAIL01,自动切换至 MAIL02 节点。
- 报错: WinRM 客户端无法处理该请求,无法确定从目标计算机得到的 HTTP 响应的内容类型。
用户端表现
- 用户登录 mail.crashmemo.cn 跳转页面显示 500
- 邮件客户端无法连接服务器,无法收发邮件



排查逻辑与步骤
隔离故障
Exchange 双节点 DAG 环境,内网 DNS 服务器 mail.crashmemo.cn 解析到两个 Exchange 节点的 IP 地址,客户端默认使用 DNS 轮询(Round Robin)轮流访问 MAIL01 和 MAIL02。
- 操作: 断开 MAIL01 虚拟机的网卡,DNS 轮询会让所有客户端自动切换到 MAIL02 的服务。
- 目的: 防止故障节点在修复期间因服务频繁重启,影响正在使用的用户。
定位源头
- 全局扫描: 使用 PowerShell 脚本对 IIS 全局配置文件进行关键字扫描:
- applicationHost.config
- machine.config
- 结果: 在 C:\Windows\System32\inetsrv\config\applicationHost.config 中发现全局引用。
修复
- 备份: 备份 applicationHost.config 为 .bak 文件。
- 清理: 以管理员权限编辑该文件,定位并删除
节和 节中关于 HttpSessionModule 的所有 add 标签。 - 清除缓存: 彻底删除 ASP.NET 临时编译目录: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\
- 服务重置: 执行 iisreset 重新加载配置。
验证
- 打开 IIS 管理器,点击"Exchange Back End"站点下的"模块”,不再弹出报错窗口。
- 虚拟机网卡连接上去。
- 打开 Exchange Management Shell 正常连接。

- 终端访问 mail.crashmemo.cn/owa 和 https://mail.crashmemo.cn/ecp 均可以正常登录。
- 通过故障转移群集管理器或命令 Get-ClusterNode 查看 mail1 是否已经正常加入集群。


到这里问题基本上就修复完成了,但是看了下 mail1 服务器的数据库和索引还是挂起暂停的状态,还是要处理下,下面处理数据库和索引问题。
修复数据库同步
查询 Exchange 数据库同步状态
| |
Status 显示 FailedAndSuspended(失败暂停)

Exchange 复制状态检测
| |
可以看到 DatabaseRedundancy(数据库冗余)的结果是失败。
从报错信息可以看到关键信息: 由于 ‘TCP:HQ-EX16MAIL02.crashmemo.LOCAL/STAFF-DB03\E020010DD71.log’ 丢失,增量种子重新设定检查失败。


更新数据库副本
有两种方式:WEB 界面和命令行,二选一。
ECP 更新数据库副本
- 登录 ECP -> 服务器 -> 数据库。
- 选中状态为 FailedAndSuspended 的数据库。
- 在右侧窗格中找到 HQ-EX16MAIL01 副本,点击"更新"。
- 通常选择默认选项(从 MAIL02 复制)即可。


命令行更新数据库副本
| |
注意: -DeleteExistingFiles 参数:因为报错提示需要 Reseed,系统通常需要删除 MAIL01 上旧的、损坏的数据库文件,然后重新从 MAIL02 下载。
数据库副本恢复正常
现在 STAFF-DB01 数据库副本状态已经正常,但是内容索引状态:FailedAndSuspended

Web界面显示

修复内容索引
内容索引(Content Index)负责 Outlook 和 OWA 的搜索功能。如果索引不正常,员工在搜索历史邮件时会搜不到结果。
索引修复
| |
出现提示:因为刚刚完成了数据库文件(.edb)的全量同步(Reseed),Exchange 系统在内部记录了"正在进行同步任务"。需要等待一会儿再来执行。

再次执行同步命令:

同步结束后查看索引状态还是 FailedAndSuspended:
| |
报错:The content index is corrupted(内容索引已损坏)

索引重建
| |

还是有问题。

重启服务
重启 MSExchangeFastSearch 和 HostControllerService 这两个服务:
- MSExchangeFastSearch: 充当"逻辑大脑",负责监控数据库变动并提取邮件关键词。
- HostControllerService: 充当"执行四肢",负责索引文件的物理读写、跨服务器同步及存储。
| |

| |
![]()
查看下索引状态,发现已经恢复正常了!


总结
本次故障分为两个阶段处理:
- IIS 模块异常修复:通过扫描 applicationHost.config 定位到损坏的 HttpSessionModule 引用,清理后恢复服务
- 数据库副本与索引修复:重启相关服务完成内容索引重建
关键经验:
- IIS 模块加载异常时,优先检查
C:\Windows\System32\inetsrv\config\applicationHost.config中的模块配置 - 数据库副本状态异常时,先用
-DeleteExistingFiles参数强制重建 - 内容索引问题可通过重启 MSExchangeFastSearch 和 HostControllerService 服务解决