当 Outlook 客户端尝试更新全球通讯簿,实际上是下载脱机通讯簿(Officeline Address Book,简称 OAB)时,可能会收到 0×80190194 的错误。错误代码 0×80190194 的代表的意思是 HTTP 404,404错误就是指定的文件未找到或不存在。那应用到这个场景,就是 Outlook 客户端尝试下载的脱机通讯簿文件未找到或不存在。用 err 工具可以得出错误代码 0×80190194 的信息:
C:WINDOWSsystem32err 0x80190194
# for hex 0x80190194 / decimal -2145844844
BG_E_HTTP_ERROR_404 bitsmsg.h
# 1 matches found for "0x80190194"
所以,根本原因是 Exchange 客户端访问服务器(CAS)上不存在脱机通讯簿文件。为什么会出现这样的情况,这需要我们了解下下载 OAB 的过程和生成 OAB 的过程。
一、Outlook 下载 OAB 的过程
1.Outlook 启动
2.Outlook 通过 autodiscover 服务获取 autodiscover.xml 文件,该文件包含所有 Exchange Web Services 的URL。
3.Outlook 解析 autodiscover.xml 文件,确认是在公司局域网<EXCH>还是外网<EXPR>
4.通过 Outlook 的工具-发送接收-下载地址簿菜单触发下载地址簿的请求
5.Outlook 查找 OABUrl,类似: http://OABServer.domain.com/OAB/edb3e44f-c49b-4597-b996-cb1093405985/
6.Outlook 查到 OABUrl 后建立 HTTPS 连接 OAB Web Virtual Directory,下载并获取 OAB.xml 文件
7.Outlook 检查 OAB.xml 文件并对比本地副本,确定需要下载哪些 OAB 文件
8.Outlook 从 Exchange CAS 服务器上下载 OAB 文件。
CAS 服务器上的 :Program FilesMicrosoftExchange ServerClientAccessOAB 目录对应的是 OAB 虚拟目录。
二、服务器生成 OAB 的过程
Exchange 邮箱服务器负责生成 OAB,然后通过 FDS (File Distribution Service) 复制到 CAS 服务器,Outlook 客户端通过 CAS 服务器下载 OAB。
如果服务器架构比较简单,例如邮箱服务器和客户端访问服务器都在同一台服务器上,OAB 是马上复制的。如果这2个角色是分开的,OAB 的根据一些场景进行复制:
1.新的 OAB 生成
2.OAB 发生更改
3.生成 OAB 的服务器发生更改
4.更改了默认的更新间隔
一个简单的确认 OAB 被成功复制到 CAS 服务器上的默认 OAB 站点的方法是,常看 CAS 服务器上的应用程序日志。复制成功后,FDS (File Distribution Service) 会记录 Event ID 为 1008 的日志。
Event Type: Information
Event Source: MSExchangeFDS
Event Category: FileReplication
Event ID: 1008
Date: 11/28/2012
Time: 1:55:46 PM
User: N/A
Computer: OABServer
Description:
Process MSExchangeFDS.exe (PID=2484). Offline Address Book data synchronization task has completed successfully. OAB name: “Default Offline Address Book”, Guid: edb3e44f-c49b-4597-b996-cb1093405985
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
三、解决 OAB 问题
如果 CAS 服务器上的 OAB 未成功复制,可以查看应用程序日志找线索。先提供2种方法供参考:
1.重启 MSExchangeFDS 服务
在 CAS 服务器上,在命令行中输入以下命令重启 Microsoft Exchange File Distribution Service:
net stop MSExchangeFDS
net start MSExchangeFDS
或
net stop MSExchangeFDS && net start MSExchangeFDS
检查 Event ID 1008 是否生成。
2.手动复制 OAB 目录
将 OAB 目录从生成服务器即邮箱服务器,手动复制到 CAS 服务器。
-邮箱服务器默认路径:
C:Program FilesMicrosoftExchange ServerExchangeOAB
UNC 路径:
\ExchangeServerNameOAB<GUID of OAB>
-CAS 服务器默认路径:
C:Program FilesMicrosoftExchange ServerClient AccessOAB
一旦 CAS 服务器上有了 OAB 目录,Outlook 就能成功更新全球地址簿了。