若要排查与忙/闲信息相关的错误,请从本文顶部的目录 (TOC) 中选择适用的错误消息。
如果故障排除步骤无法帮助你解决问题,请联系 Microsoft 支持部门。
验证消息的安全性时出错
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
电子邮件地址 <smtp 地址> 的自动发现失败,出现 System.Web.Services.Protocols.SoapHeaderException 错误:在 System.Web 上验证邮件的安全性时出错。 Services.Protocols。 SoapHttpClientProtocol。 ReadResponse (SoapClientMessage 消息、WebResponse 响应、Stream responseStream、Boolean asyncCall) at System.Web.Services.Protocols.SoapHttpClientProtocol.EndInvoke (IAsyncResult asyncResult)
如果未启用或必须重置 WSSecurity 身份验证,或者在 Exchange Server 中续订联合证书之后,则会发生此错误。
故障排除步骤
完成每个步骤后,检查忙/闲问题是否已修复。
若要刷新 Microsoft 联合网关中的元数据,请在本地 Exchange 命令行管理程序中运行以下命令两次, (EMS) :
Get-FederationTrust | Set-FederationTrust -RefreshMetadata
有关详细信息,请参阅 忙/闲查找在跨界环境或 Exchange Server 混合部署中停止工作。
按照以下步骤切换 WSSecurity 身份验证:
按照 联合组织中的用户无法查看另一个 Exchange 组织的忙/闲信息 中的过程,在所有本地 Exchange 服务器上的自动发现和 EWS 虚拟目录中启用或重置 WSSecurity 身份验证(如果已启用)。
注意
即使 PowerShell cmdlet
Get-AutodiscoverVirtualDirectory
的输出并Get-WebServicesVirtualDirectory
指示 WSSecurity 身份验证已启用,也可以执行此步骤。此过程仅影响跨界忙/闲,不会影响其他客户端-服务器连接。
iisreset /noforce
在每个本地 Exchange 服务器上的 PowerShell 或命令提示符窗口中运行命令,以重启 IIS。重启所有本地 Exchange 服务器。
检查并解决系统事件日志中的任何时间倾斜警告或错误。
TargetSharingEpr
通过在 Exchange Online PowerShell 中运行以下 cmdlet,将组织关系中的参数值设置为本地外部 Exchange Web Services (EWS) URL:Set-OrganizationRelationship "O365 to On-premises*" -TargetSharingEpr <on-premises EWS external URL>
设置
TargetSharingEpr
参数值后,云邮箱将绕过自动发现并直接连接到本地邮箱的 EWS 终结点。注意:参数的
TargetSharingEpr
默认值为空。 自动发现参数TargetAutodiscoverEpr
或DiscoveryEndpoint
通常包含本地 EWS 外部 URL (自动发现终结点) 。 若要获取TargetAutodiscoverEpr
和DiscoveryEndpoint
参数值,请运行以下 PowerShell cmdlet:Get-OrganizationRelationship | FL TargetAutodiscoverEpr Get-IntraOrganizationConnector | FL DiscoveryEndpoint
确保
TargetApplicationUri
组织关系中的参数值与联合组织标识符中的参数值匹配AccountNamespace
。 若要查找TargetApplicationUri
参数值,请运行 Test-OrganizationRelationship PowerShell cmdlet。 若要查找AccountNamespace
参数值,请参阅 揭秘混合闲/忙。
代理 Web 请求失败:无法连接到远程服务器
问题
云用户无法查看本地用户的忙/闲信息,反之亦然。 诊断问题时,会发现以下错误消息:
代理 Web 请求失败。 ,内部异常:System.Net.WebException:无法连接到远程服务器;System.Net.Sockets.SocketException:连接尝试失败,因为连接方在一段时间后未正确响应,或建立连接失败,因为连接的主机未能响应 MICROSOFT_IP CUSTOMER_IP System.Net.Sockets.Socket.EndConnect (IAsyncResult asyncResult)
如果网络连接问题阻止 Exchange Online 中的 IP 地址与 Exchange Server 中的终结点之间的入站或出站连接,则会发生此错误。
故障排除步骤
完成每个步骤后,检查忙/闲问题是否已修复。
验证每个本地 Exchange 服务器上的防火墙是否允许 Exchange Server 终结点与 Exchange Online IP 地址之间的入站或出站连接。 若要识别防火墙问题,请从 Exchange Online 发出忙/闲请求,然后检查本地防火墙、反向代理和网络日志。 有关如何配置防火墙的详细信息,请参阅 联合委派的防火墙注意事项 和 Microsoft 365 URL 和 IP 地址范围。
验证来自 Exchange Online 的请求是否到达本地客户端访问服务器。 在所有本地客户端访问服务器上执行以下步骤:
从 Exchange Online 发出忙/闲请求。
检查 W3SVC1 文件夹中的默认网站的 IIS 日志,验证是否已记录忙/闲请求。 W3SVC1 文件夹路径为
%SystemDrive%\inetpub\logs\LogFiles\W3SVC1
。检查以下文件夹中的 HTTP 代理日志,验证是否记录了忙/闲请求:
%ExchangeInstallPath%\Logging\HttpProxy\Autodiscover
%ExchangeInstallPath%\Logging\HttpProxy\Ews
通过在 Exchange Online PowerShell 中运行以下 cmdlet,测试从 Exchange Online 到本地 Exchange Web Services (EWS) 终结点的连接:
Test-MigrationServerAvailability -RemoteServer <on-premises mail server FQDN> -ExchangeRemoteMove -Credentials (Get-Credential)
注意
如果将来自 Internet 的入站连接限制为仅允许 Exchange Online IP 地址连接到本地 EWS 终结点,则此测试非常有用。
如果只有少数云用户受此问题影响,并且其邮箱托管在 Exchange Online 中的同一邮件服务器上,请检查该邮件服务器是否可以连接到本地终结点。 本地终结点可能会阻止来自该邮件服务器的出站外部 IP 地址的连接。
当系统提示输入凭据时,以“domain\administrator”格式输入域管理员凭据。
电子邮件地址的自动发现失败:HTTP 状态 404
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
电子邮件地址 <用户 SMTP 地址> 的自动发现失败并出现错误 System.Net.WebException:请求失败,并显示 HTTP 状态代码
404 Not Found
。
如果自动发现终结点无法正常工作或配置错误,则会发生此错误。
故障排除步骤
完成每个步骤后,检查忙/闲问题是否已修复。
检查自动发现终结点是否有效:
运行以下命令,从
DiscoveryEndpoint
或TargetAutodiscoverEpr
参数获取自动发现终结点 URL:Get-IntraOrganizationConnector | FL DiscoveryEndpoint Get-OrganizationRelationship | FL TargetAutodiscoverEpr
在 Web 浏览器中导航到自动发现终结点 URL。 有效的自动发现终结点不会返回 HTTP 状态代码
404 Not Found
。
请确保在云用户的组织设置 (组织内部连接器或组织关系) 指定本地用户的域:
在 Exchange Online PowerShell 中运行以下 PowerShell cmdlet:
Get-IntraOrganizationConnector | FL TargetAddressDomains Get-OrganizationRelationship -Identity <cloud to on-premises ID> | FL DomainNames
验证任一命令的输出中是否列出了本地用户的域。 例如,如果云用户
user1@contoso.com
查找本地用户的忙/闲,user2@contoso.ro
请验证是否已列出本地域contoso.ro
。如果云用户的组织设置中不存在本地用户的域,请运行以下 PowerShell cmdlet 添加域:
Set-IntraOrganizationConnector -Identity <connector ID> -TargetAddressDomains @{add="<on-premises domain>"}
确保 SVC 处理程序映射同时存在于 IIS 管理器 中默认网站 下的自动发现和 EWS 虚拟目录中。 有关详细信息,请参阅 FederationInformation 无法接收 和 目标已引发异常。
注意:映射
AutodiscoverDiscoveryHander
(*.svc) 不用于联合忙/闲查找。
异常代理 Web 请求失败
LID:43532
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
异常代理 Web 请求失败。 ,内部异常:请求失败,HTTP 状态为 401:未授权诊断:2000005;reason= “令牌中的用户上下文指定的用户不明确。”;error_category=“invalid_user”
如果本地用户的 UPN、SMTP 地址或 SIP 地址由另一个本地邮箱使用,则会发生此错误。
解决方案
要解决此问题,请遵循以下步骤:
使用自定义 LDAP 查询搜索具有重复 UPN、SMTP 地址或 SIP 地址的本地用户对象。 可以使用 LDP.exe 或 Active Directory 用户和计算机 MMC 管理单元来运行 LDAP 查询。
例如,若要将所有用户
user@corp.contoso.com
显示为 UPN、user@contoso.com
SMTP 地址或user@contoso.com
SIP 地址,请使用以下 LDAP 查询:(|(userPrincipalName=user@corp.contoso.com)(proxyAddresses=SMTP:user@contoso.com)(proxyAddresses=sip:user@contoso.com))
有关如何使用 LDP.exe 或 Active Directory 用户和计算机查找 Active Directory 对象的详细信息,请参阅 LDP 示例。
更改重复地址或删除重复的用户对象。
远程主机强制关闭现有连接
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
代理 Web 请求失败。 ,内部异常:System.Net.WebException:基础连接已关闭:接收时发生意外错误。 System.IO.IOException:无法从传输连接读取数据:远程主机强行关闭了现有连接。 System.Net.Sockets.SocketException:远程主机强行关闭了现有连接。
如果本地防火墙阻止来自 Exchange Online 中的外部出站 IP 地址的入站连接,则会发生此错误。
故障排除步骤
完成每个步骤后,检查忙/闲问题是否已修复。
检查来自 Exchange Online 的忙/闲请求是否到达 Exchange 服务器上的 IIS。 从 Exchange Online 发出忙/闲请求,并搜索在发出忙/闲请求时发出的以下 IIS 日志条目:
%ExchangeInstallPath%\Logging\HttpProxy\Autodiscover 文件夹中包含“ASAutoDiscover/CrossForest/EmailDomain”的自动发现条目。
注意:如果将组织关系中的 参数手动设置为
TargetSharingEpr
本地外部 Exchange Web Services (EWS) URL,则自动发现将绕过,并且此条目将不存在。%ExchangeInstallPath%\Logging\HttpProxy\Ews 文件夹中包含“ASProxy/CrossForest/EmailDomain”的 EWS 条目。
注意:IIS 日志中的时间戳使用 UTC 时间。
验证每个本地 Exchange 服务器上的防火墙是否允许 Exchange Server 终结点与 Exchange Online IP 地址之间的入站或出站连接。 若要识别防火墙问题,请从 Exchange Online 发出忙/闲请求,然后检查本地防火墙、反向代理和网络日志。 有关如何配置防火墙的详细信息,请参阅 联合委派的防火墙注意事项 和 Microsoft 365 URL 和 IP 地址范围。
如果组织使用 组织关系 来实现忙/闲,请确保在每个 Exchange 服务器上都安装了联合证书。 在 Exchange 命令行管理程序中运行以下命令, (EMS) :
Test-FederationTrustCertificate Get-FederatedOrganizationIdentifier -IncludeExtendedDomainInfo | FL
如果安装了联合证书,则命令输出不应包含任何错误或警告。
按照以下步骤切换 WSSecurity 身份验证:
按照 联合组织中的用户无法查看另一个 Exchange 组织的忙/闲信息 中的过程,在所有本地 Exchange 服务器上的自动发现和 EWS 虚拟目录中启用或重置 WSSecurity 身份验证(如果已启用)。 即使已启用 WSSecurity 身份验证,也可以执行此步骤。
回收 IIS 管理器中的自动发现和 EWS 应用程序池。
iisreset /noforce
在每个本地 Exchange 服务器上的 PowerShell 或命令提示符窗口中运行命令,以重启 IIS。
如果只有少数云用户受此问题影响,并且其邮箱托管在 Exchange Online 中的同一邮件服务器上,请检查该邮件服务器是否可以连接到本地终结点。 本地终结点可能会阻止来自该邮件服务器的出站 IP 地址的连接。
在 Active Directory 中找不到林/域的配置信息
LID:47932
问题
云用户无法查看本地用户的忙/闲信息,反之亦然。 诊断问题时,会发现以下错误消息:
在 Active Directory 中找不到林/域 <域> 的配置信息。
如果组织设置配置错误,则会发生此错误。
故障排除步骤
完成每个步骤后,检查忙/闲问题是否已修复。
验证请求其忙/闲信息的用户的域是否存在于尝试查看闲/忙信息的用户的组织设置中。 根据忙/闲方向选择以下过程之一。
云到本地
对于尝试查看本地用户的忙/闲信息的云用户,请执行以下步骤:
连接到 Exchange Online PowerShell,然后运行以下 PowerShell cmdlet 以获取联合域:
Get-IntraOrganizationConnector | FL TargetAddressDomains Get-OrganizationRelationship -Identity <cloud to on-premises ID> | FL DomainNames
验证任一命令的输出中是否列出了本地用户的域。 例如,如果云用户
user1@contoso.com
查找本地用户的忙/闲,user2@contoso.ro
请验证是否已列出本地域contoso.ro
。注意
还可以通过在 Exchange Online PowerShell 中运行
(Get-IntraOrganizationConfiguration).OnPremiseTargetAddresses
或在本地 Exchange 命令行管理程序中运行(Get-FederatedOrganizationIdentifier).Domains
来查找域名, (EMS) 。如果云用户的组织设置中不存在本地用户的域,请运行以下 PowerShell cmdlet 添加域:
Set-IntraOrganizationConnector -Identity <connector ID> -TargetAddressDomains @{add="<on-premises domain>"}
本地到云
对于尝试查看云用户的忙/闲信息的本地用户,请执行以下步骤:
在 EMS 中,运行以下 PowerShell cmdlet:
Get-IntraOrganizationConnector | FL TargetAddressDomains Get-OrganizationRelationship -Identity <on-premises to cloud ID> | FL DomainNames
检查云用户的域是否与命令输出中列出的某个域匹配。 例如,如果本地用户
user1@contoso.ro
查找云用户的user2@contoso.com
忙/闲信息,请验证任一命令的输出中是否存在云域contoso.com
。如果云用户的域在本地用户的组织设置中不存在,请添加域。 运行以下命令:
Set-IntraOrganizationConnector -Identity <connector ID> -TargetAddressDomains @{add="<cloud domain>"}
确保混合 Exchange 部署具有完整的混合配置。 如有必要,请重新运行混合配置向导 (HCW) 并选择“完全混合配置”,而不是“最低混合配置”。最小混合配置不会 (联合信任) 或组织内部连接器创建组织关系。
代理 Web 请求失败:HTTP 状态 401
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下任一错误消息。
错误消息 1
代理 Web 请求失败。 ,内部异常:请求失败,HTTP 状态为 401:未授权。
错误消息 2
电子邮件地址的自动发现失败。 ,内部异常:请求失败,HTTP 状态为 401:未授权。
如果 Exchange Server 前面的外围设备配置为预进行身份验证, (要求用户名和密码) 而不是将请求从 Exchange Online 直接传递到 Exchange Server,则会发生此错误。 混合 Exchange 部署中的自动发现和 EWS 虚拟目录不支持预身份验证。
外围设备的示例包括反向代理、防火墙和 Microsoft 威胁管理网关 (TMG) 。
错误消息 1 指示 EWS 请求失败。
错误消息 2 指示自动发现请求失败。
故障排除步骤
若要排查忙/闲问题,无论收到哪个错误消息,请使用以下步骤。 完成每个步骤后,检查忙/闲问题是否已修复。
检查是否启用了预身份验证。 请按照下列步骤操作:
在远程连接分析器中运行 忙/闲测试 ,检查是否启用了预身份验证。 云邮箱是 源邮箱,本地邮箱是 目标邮箱。 测试完成后,检查终结点上的直通身份验证状态。 如果看到红色复选标记,请禁用预身份验证并重新测试。 如果看到绿色复选标记,请继续下一步,因为它可能是误报。
检查来自 Exchange Online 的忙/闲请求是否到达 IIS。 执行忙/闲查询,然后在查询时在 Exchange Server 中搜索以下任何条目:
在 %ExchangeInstallPath%\Logging\HttpProxy\Autodiscover 文件夹中,搜索具有 HTTP 状态代码
401 Unauthorized
并包含文本“ASAutoDiscover/CrossForest/EmailDomain”的自动发现条目。注意:如果
TargetSharingEpr
组织关系中的 参数指定了本地 EWS 外部 URL,则会绕过自动发现,并且不会显示此条目。在 %ExchangeInstallPath%\Logging\HttpProxy\Ews 文件夹中,搜索具有 HTTP 状态代码
401 Unauthorized
并包含文本“ASProxy/CrossForest/EmailDomain”的 EWS 条目。
注意:IIS 日志中的时间戳使用 UTC 时间。 某些具有 HTTP 状态代码
401 Unauthorized
的条目是正常的。指定的条目指示忙/闲请求到达 IIS,通常排除预身份验证问题。 如果未找到指定的条目,请检查反向代理和防火墙日志,了解忙/闲请求停滞的位置。
请确保已在 EWS 和自动发现虚拟目录上启用 WSSecurity (Exchange Server 2010) 或 OAuth 身份验证 (Exchange Server 2013 及更高版本) 。 此外,请验证是否已在 IIS 中为自动发现和 EWS 虚拟目录启用默认身份验证设置。 有关详细信息,请参阅 Exchange 虚拟目录的默认身份验证设置 和 Exchange 虚拟目录的默认设置。
按照 验证消息的安全性时发生的错误中的解决步骤进行操作。 如果配置了 WSSecurity,请确保执行切换 WSSecurity 的步骤。 如果配置了 OAuth 身份验证而不是 WSSecurity,请运行以下命令,在自动发现和 EWS 虚拟目录上切换 OAuth 身份验证:
Set-WebServicesVirtualDirectory "<ServerName>\ews (Exchange Back End)" -OAuthAuthentication:$False Set-WebServicesVirtualDirectory "<ServerName>\ews (Exchange Back End)" -OAuthAuthentication:$True Set-AutodiscoverVirtualDirectory "<ServerName>\Autodiscover (Exchange Back End)" -OAuthAuthentication:$False Set-AutodiscoverVirtualDirectory "<ServerName>\Autodiscover (Exchange Back End)" -OAuthAuthentication:$True
验证你是否具有最新的联合信任。 在 Exchange Online PowerShell 中运行以下命令,检索 Exchange 组织的联合信任信息:
Get-FederationTrust
命令输出应包含以下信息:
名称 ApplicationIdentifier ApplicationUri WindowsLiveId 260563 outlook.com MicrosoftOnline 260563 outlook.com 注意:信任
WindowsLiveId
是 Microsoft 联合网关的使用者实例。 信任MicrosoftOnline
是 Microsoft 联合网关的业务实例。对于最新的联合身份验证信任,请确保
ApplicationIdentifier
为 且不是292841
,并且ApplicationUri
为outlook.com
,而不是outlook.live.com
260563
。 如果联合身份验证信任已过时,请联系 Microsoft 支持部门。
电子邮件地址的自动发现失败:InvalidUser
LID: 33676
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
由于用户设置“ExternalEwsUrl”https://Autodiscover/Autodiscover.svc/WSSecurity中出现错误,自动发现服务的响应失败。 错误消息:InvalidUser。
在远程连接分析器中运行 忙/闲测试 时,可能会显示错误消息。
如果云邮箱或自动发现终结点配置错误,则会发生此错误。
故障排除步骤
运行以下命令,验证云用户是否具有包含域的
onmicrosoft.com
辅助 SMTP 地址:Get-Mailbox -Identity <mailbox ID> | FL EmailAddresses
例如,具有主 SMTP 地址
user1@contoso.com
的用户应具有类似于user1@contoso.mail.onmicrosoft.com
的辅助 SMTP 地址。如果云用户是从 Exchange Server 管理的,请将辅助 SMTP 地址添加到 Exchange Server,然后在本地环境和 Microsoft Entra ID 之间同步标识数据。
运行以下命令,将组织关系中的参数值设置为
TargetSharingEpr
本地外部 Exchange Web Services (EWS) URL:Connect-ExchangeOnline Set-OrganizationRelationship "O365 to On-premises*" -TargetSharingEpr <on-premises EWS external URL>
设置
TargetSharingEpr
参数值后,云邮箱将绕过自动发现并直接连接到本地邮箱的 EWS 终结点。
调用方无权访问忙/闲数据
LID:47652、44348、40764
问题
云用户无法查看本地用户的忙/闲信息,反之亦然。 诊断问题时,会发现以下错误消息:
Microsoft.Exchange.InfoWorker.Common.Availability.NoFreeBusyAccessException:调用方无权访问忙/闲数据。
如果请求其忙/闲信息的用户的邮箱配置错误,则会发生此错误。
故障排除步骤
完成每个步骤后,检查忙/闲问题是否已修复。
运行以下命令,检查请求其忙/闲信息的用户的日历权限:
Get-MailboxFolderPermission -Identity <mailbox ID>:\Calendar
AccessRights
命令输出中用户的值应为Default
AvailabilityOnly
或LimitedDetails
。AccessRights
如果值为None
,请运行以下 PowerShell cmdlet,将该值设置为AvailabilityOnly
或LimitedDetails
:Set-MailboxFolderPermission -Identity <mailbox ID>:\Calendar -AccessRights <access rights value>
使用适用的方法来检查组织关系:
如果云用户无法查看本地用户的忙/闲信息:
验证本地组织关系是否指定了可以访问本地忙/闲信息的云域。 一个示例云域是
contoso.mail.onmicrosoft.com
。 有关如何在 Exchange Server 中修改组织关系的信息,请参阅 使用 PowerShell 修改组织关系。 还要验证云用户的 From 电子邮件地址是否具有相同的云域,例如lucine.homsi@contoso.mail.onmicrosoft.com
。如果本地用户无法查看云用户的忙/闲信息:
验证云组织关系是否指定可以访问云忙/闲信息的本地域。 本地域的一个示例是
contoso.com
。 有关如何在 Exchange Online 中修改组织关系的信息,请参阅 使用 Exchange Online PowerShell 修改组织关系。 此外,验证本地用户的 From 电子邮件地址是否具有相同的本地域,例如lucine.homsi@contoso.com
。
处理消息中的安全令牌时出错
LID:59916
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
ProxyWebRequestProcessingException ErrorProxyRequestProcessingFailed
代理 Web 请求失败。 ,内部异常:处理消息中的安全令牌时出错。
如果 Microsoft 联合网关中的证书或元数据无效,则会发生此错误。
故障排除步骤
运行以下 PowerShell cmdlet,检查本地联合身份验证信任证书的到期日期和指纹:
Get-FederationTrust | FL Test-FederationTrust Test-FederationTrustCertificate
若要刷新 Microsoft 联合网关中的元数据,请在本地 Exchange 命令行管理程序中运行以下命令两次, (EMS) :
Get-FederationTrust | Set-FederationTrust -RefreshMetadata
有关详细信息,请参阅 忙/闲查找停止工作。
不允许跨组织请求,因为请求者来自其他组织
LID:39660
问题
你有一个混合网格方案,其中非混合 Exchange Online 租户中的云用户无法查看另一个混合 Exchange Online 租户中的云用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
不允许跨组织请求邮箱 <SMTP 地址> ,因为请求者来自其他组织
收件人: <SMTP 地址>
异常类型:CrossOrganizationProxyNotAllowedForExternalOrganization
异常消息:不允许跨组织请求 <SMTP 地址> ,因为请求者来自其他组织。
例如,非混合 Exchange Online 租户中的用户 lucine@adatum.com
无法查看混合租户中云用户的 chanok@contoso.com
忙/闲。 云用户 chanok@contoso.com
具有代理电子邮件地址 chanok@contoso.mail.onmicrosoft.com
。 非混合租户具有两种组织关系: contoso.com
(本地) 和 contoso.mail.onmicrosoft.com
(云) 。 自动发现到 Exchange Server 的 contoso.com
点,自动发现指向 Exchange Online 的 contoso.mail.onmicrosoft.com
点。 非混合租户中的用户在查询 的忙/闲信息 chanok@contoso.com
时收到错误消息,因为点的 contoso.com
自动发现不指向 Exchange Online。
注意
有关等效的本地混合网格方案,请参阅 混合网格。
解决方法
若要解决此问题,组织可以使用以下方法之一:
非混合 Exchange Online 租户中的用户应使用自动发现指向 Exchange Online 的电子邮件地址查询混合租户中云用户的闲/忙。 例如,
lucine@adatum.com
查询 的chanok@contoso.mail.onmicrosoft.com
忙/闲信息。 若要成功查询忙/闲信息,非混合 Exchange Online 租户中的用户必须知道混合租户中的哪些用户托管在云中,并且对于其中每个用户,自动发现指向 Exchange Online 的电子邮件地址。非混合 Exchange Online 租户的管理员应将混合租户中每个云用户的外部电子邮件地址设置为自动发现指向 Exchange Online 的电子邮件地址。 例如,非混合 Exchange Online 租户中的管理员将混合租户中 的目标
chanok@contoso.com
电子邮件地址设置为chanok@contoso.mail.onmicrosoft.com
。 若要进行此更改,管理员必须知道混合租户中的哪些用户托管在云中,并且对于其中每个用户,自动发现指向 Exchange Online 的电子邮件地址。 有关用户电子邮件地址的跨租户同步的详细信息,请参阅 什么是跨租户同步。
更多信息
在以下方案中,用户可能会遇到类似问题:
- 用户位于非混合 Exchange Server 租户中。
- 用户尝试查看混合租户中本地用户的忙/闲情况。
- 混合租户的自动发现指向 Exchange Online。
例如,非混合 Exchange Server 租户中的用户无法查看混合租户中本地用户的 chanok@contoso.com
忙/闲信息,因为自动发现 contoso.com
指向 Exchange Online 的点 (autodiscover-s.outlook.com
) 。
请求失败,HTTP 状态为 401:未授权 (缺少签名证书)
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
System.Net.WebException:请求失败,HTTP 状态为 401:未授权。
如果运行 Test-OAuthConnectivity cmdlet,会在命令输出中看到以下错误消息:
Microsoft.Exchange.Security.OAuth.OAuthTokenRequestFailedException:缺少签名证书。
例如,运行以下命令:
Test-OAuthConnectivity -Service AutoD -TargetUri <on-premises Autodiscover URL> -Mailbox <mailbox ID> -Verbose | FL
参数 TargetUri
值为本地自动发现服务 URL。 该 URL 的示例为 https://mail.contoso.com/Autodiscover/Autodiscover.svc
。
如果身份验证配置具有无效的 OAuth 证书,则会发生此错误。
解决方案
要解决此问题,请遵循以下步骤:
在 Exchange 命令行管理程序中运行以下 PowerShell cmdlet (EMS) 以获取身份验证配置使用的 OAuth 证书的指纹:
Get-AuthConfig | FL CurrentCertificateThumbprint
如果命令输出未返回证书指纹,请转到步骤 3。 否则,请继续执行下一步。
运行以下 PowerShell cmdlet,检查 Exchange Server 中是否存在步骤 1 中标识的证书:
Get-ExchangeCertificate -Thumbprint (Get-AuthConfig).CurrentCertificateThumbprint | FL
如果 Exchange Server 未返回任何证书,请转到步骤 3 以创建新证书。
如果 Exchange Server 返回证书,但其指纹与在步骤 1 中获取的指纹不同,请转到步骤 4。 在步骤 4 中,指定 Exchange Server 返回的证书的指纹。
运行以下 PowerShell cmdlet 以创建新的 OAuth 证书:
New-ExchangeCertificate -KeySize 2048 -PrivateKeyExportable $true -SubjectName "CN=Microsoft Exchange Server Auth Certificate" -FriendlyName "Microsoft Exchange Server Auth Certificate" -DomainName <Domain> -Services SMTP
注意
如果系统提示你替换 SMTP 证书,请不要接受提示。
在步骤 4 中,指定在此步骤中创建的新证书的指纹。
运行以下 PowerShell cmdlet 以更新身份验证配置以使用指定的证书:
$date=Get-Date Set-AuthConfig -NewCertificateThumbprint <certificate thumbprint> -NewCertificateEffectiveDate $date Set-AuthConfig -PublishCertificate
注意
如果收到警告,指出生效日期小于 48 小时,请选择继续。
运行以下 PowerShell cmdlet 以删除对上一个证书的任何引用:
Set-AuthConfig -ClearPreviousCertificate
应用程序缺少 RBAC 角色的链接帐户,或者链接的帐户没有 RBAC 角色分配,或者调用用户帐户登录被禁用
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
System.Web.Services.Protocols.SoapException:应用程序缺少 RBAC 角色的链接帐户,或者链接的帐户没有 RBAC 角色分配,或者调用用户帐户登录被禁用。
故障排除步骤
若要排查错误消息中提到的问题,请使用以下步骤。 完成步骤 1 和步骤 2 后,检查忙/闲问题是否已修复。
请确保 Exchange Server 合作伙伴应用程序列表中存在“Exchange Online-ApplicationAccount”条目。 若要进行检查,请在 Exchange 管理控制台中 (EMS) 运行以下 PowerShell cmdlet:
Get-PartnerApplication | FL LinkedAccount
帐户条目应显示为
<root domain FQDN>/Users/Exchange Online-ApplicationAccount
。 如果列出了条目,请转到步骤 2。如果未列出帐户条目,请按照以下步骤添加帐户:
运行以下 PowerShell cmdlet 以在本地 Active Directory 中查找帐户:
Set-ADServerSettings -ViewEntireForest $true Get-User "Exchange Online-ApplicationAccount"
如果帐户在 Active Directory 中列出,请转到步骤 1b。
如果该帐户未在 Active Directory 中列出,则可能已被删除。 使用 ADRestore 检查帐户状态并还原帐户(如果已删除)。 如果使用 ADRestore 还原了帐户,请转到步骤 1b。
如果无法使用 ADRestore 还原帐户,请按照 Active Directory 和 Exchange Server 域中所述的过程进行操作。 如果该过程未还原帐户,请在 Active Directory 中手动创建帐户,然后继续执行步骤 1b。
运行以下 PowerShell cmdlet,将 Active Directory 帐户添加到 Exchange Server 合作伙伴应用程序列表:
Set-PartnerApplication "Exchange Online" -LinkedAccount "<root domain FQDN>/Users/Exchange Online-ApplicationAccount"
重启所有本地 Exchange 服务器,或者通过在每台服务器的 PowerShell 或命令提示符窗口中运行
iisreset /noforce
命令来重启 IIS。
在 EMS 中运行以下 PowerShell cmdlet,检查基于角色的访问控制 (RBAC) 分配:
Get-ManagementRoleAssignment -RoleAssignee "Exchange Online-ApplicationAccount" | FL Name,Role
例如,命令输出可能会列出以下角色分配:
在以下日志中搜索错误消息中所述的问题:
- Exchange Web Services (EWS) 位于 %ExchangeInstallPath%\Logging\Ews 文件夹中的 日志
- 应用程序事件日志
- 系统事件日志
在步骤 3 中列出的日志中搜索引用 AuthzInitializeContextFromSid 的错误消息。 如果发现该错误消息,请参阅以下资源:
输入的密码和存储的密码不匹配
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
收到 Soap 错误异常。 输入的密码和存储的密码不匹配。
运行以下 cmdlet 来检查云用户是否可以检索本地用户邮箱的委派令牌时,会看到相同的错误消息:
Test-OrganizationRelationship -Identity "O365 to On-premises*" -UserIdentity <cloud mailbox ID> -Verbose
原因
特定云用户的 Azure 凭据中存在不一致。
解决方案
要解决此问题,请遵循以下步骤:
重置云用户的密码。 选择相同或不同的密码。
将云用户的 UPN) (用户主体名称更新为使用
onmicrosoft.com
域,然后将 UPN 还原为其以前的值。 例如,如果云用户的 UPN 为user@contoso.com
,请将其更改为临时 UPN,user@contoso.mail.onmicrosoft.com
然后将 UPN 还原为user@contoso.com
。 为此,请使用 Azure AD PowerShell 或 MSOL 服务。使用 Azure AD PowerShell
运行以下 PowerShell cmdlet:
Connect-AzureAD Set-AzureADUser -ObjectID <original UPN> -UserPrincipalName <temporary UPN> Set-AzureADUser -ObjectID <temporary UPN> -UserPrincipalName <original UPN>
使用 MSOL 服务
运行以下 PowerShell cmdlet:
Connect-MsolService Set-MsolUserPrincipalName -UserPrincipalName <original UPN> -NewUserPrincipalName <temporary UPN> Set-MsolUserPrincipalName -UserPrincipalName <temporary UPN> -NewUserPrincipalName <original UPN>
确保
ImmutableId
本地用户对象的值为 null。ImmutableId
通过在 Exchange 命令行管理程序中运行以下命令来检查本地用户对象的值, (EMS) :Get-RemoteMailbox -Identity <cloud mailbox> | FL UserPrincipalName,ImmutableId
根据
ImmutableId
值使用以下方法之一。ImmutableId 值为 null
ImmutableId
如果值为 null,请切换其值:ImmutableId
通过在 EMS 中运行以下 PowerShell cmdlet,将远程邮箱对象的 设置为云用户的 UPN:Set-RemoteMailbox -Identity <cloud mailbox> -ImmutableId <UPN>
例如:
Set-RemoteMailbox user@contoso.com -ImmutableId user@contoso.onmicrosoft.com
。通过在 EMS 中运行以下 PowerShell cmdlet,将更改同步到云:
Import-Module ADSync Start-ADSyncSyncCycle -PolicyType Delta
若要验证
ImmutableId
值是否已更新,请在 Exchange Online PowerShell 中运行以下 PowerShell cmdlet:Get-Mailbox -Identity <cloud mailbox> | FL UserPrincipalName,ImmutableId
ImmutableId
通过在 EMS 中运行以下 PowerShell cmdlet,将远程邮箱对象的 还原为 null:Set-RemoteMailbox -Identity <cloud mailbox> -ImmutableId $null
通过在 EMS 中运行以下 PowerShell cmdlet,将更改同步到云:
Start-ADSyncSyncCycle -PolicyType Delta
若要验证
ImmutableId
值是否已更新,请在 Exchange Online PowerShell 中运行以下 PowerShell cmdlet:Get-Mailbox -Identity <cloud mailbox> | FL UserPrincipalName,ImmutableId
ImmutableId 值不为 null
ImmutableId
如果值不为 null,请在 EMS 中运行以下命令,将ImmutableId
值设置为 null:Set-RemoteMailbox -Identity <user> -ImmutableId $null
可以通过在 Exchange Online PowerShell 中运行以下 PowerShell cmdlet 来验证
ImmutableId
该值是否已更新:Get-Mailbox -Identity <cloud mailbox> | FL UserPrincipalName,ImmutableId
必须更改密码,否则帐户的密码已过期
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息之一。
错误消息 1
帐户的密码已过期
错误消息 2
必须更改密码
运行以下 cmdlet 来检查云用户是否可以检索本地用户邮箱的委派令牌时,会看到相同的错误消息:
Test-OrganizationRelationship -Identity "O365 to On-premises*" -UserIdentity <cloud mailbox ID> -Verbose
如果特定云用户的 Azure 凭据中存在不一致,则可能会发生此错误。
解决方案
选择与错误消息匹配的解决方法。
错误消息 1 的解决方法
若要解决此问题,请使用 Azure AD PowerShell 或 MSOL 服务。
使用 Azure AD PowerShell
运行以下 PowerShell cmdlet:
Connect-AzureAD Set-AzureADUser -ObjectId <account UPN> -PasswordPolicies DisablePasswordExpiration
使用 MSOL 服务
运行以下 PowerShell cmdlet:
Connect-MsolService Set-MsolUser -UserPrincipalName <account UPN> -PasswordNeverExpires $true
错误消息 2 的解决方法
若要解决此问题,请运行以下 PowerShell cmdlet:
Connect-MsolService
Set-MsolUserPassword -UserPrincipalName <UPN> -ForceChangePassword $false
有关详细信息,请参阅 从本地 Exchange 迁移后看不到忙/闲信息。
需要预配才能登录联合帐户
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
需要预配才能登录联合帐户。 ErrorWin32InteropError
运行以下 cmdlet 来检查云用户是否可以检索本地用户邮箱的委派令牌时,也会收到相同的错误消息:
Test-OrganizationRelationship -Identity "O365 to On-premises*" -UserIdentity <cloud mailbox ID> -Verbose
如果 Microsoft Entra ID 中联合用户的配置不一致,则会发生此错误。
解决方案
注意
如果此问题影响组织中的大多数或所有云用户,请联系 Microsoft 支持部门。
若要解决此问题,请将云用户的 UPN) (用户主体名称更新为使用该 onmicrosoft.com
域,然后将其切换回其以前的值 (联合域) 。 例如,如果云用户的 UPN 是 user@contoso.com
,则将其切换到临时 UPN user@contoso.mail.onmicrosoft.com
,然后返回到 user@contoso.com
。 为此, (Azure AD PowerShell 或 MSOL 服务) 使用以下方法之一:
使用 Azure AD PowerShell
运行以下 PowerShell cmdlet:
Connect-AzureAD Set-AzureADUser -ObjectID <original UPN> -UserPrincipalName <temporary UPN> Set-AzureADUser -ObjectID <temporary UPN> -UserPrincipalName <original UPN>
使用 MSOL 服务
运行以下 PowerShell cmdlet:
Connect-MsolService Set-MsolUserPrincipalName -UserPrincipalName <original UPN> -NewUserPrincipalName <temporary UPN> Set-MsolUserPrincipalName -UserPrincipalName <temporary UPN> -NewUserPrincipalName <original UPN>
请求超时
LID:43404
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
请求超时
无法及时处理请求。 在“等待请求完成”期间发生超时。
Microsoft.Exchange.InfoWorker.Common.Availability.TimeoutExpiredException:无法及时处理请求。 在“等待请求完成”期间发生超时。
异常引发的服务器的名称: <服务器名称>。
如果运行以下 cmdlet 来检查云用户是否可以检索本地用户邮箱的委派令牌,也会收到相同的错误消息:
Test-OrganizationRelationship -Identity "O365 to On-premises*" -UserIdentity <cloud mailbox ID> -Verbose
如果存在网络或暂时性问题,则会发生此错误。 错误消息为泛型。
故障排除步骤
完成每个步骤后,检查忙/闲问题是否已修复。
若要排除暂时性问题,请验证云用户在反复尝试获取本地用户的忙/闲信息时是否始终收到相同的错误消息。
检查在运行以下每个 cmdlet 时是否可以检索委派令牌:
Test-OrganizationRelationship -Identity "O365 to On-premises*" -UserIdentity <cloud mailbox ID> -Verbose Test-FederationTrust -UserIdentity <on-premises mailbox ID> -Verbose Test-FederationTrustCertificate
注意:在所有本地 Exchange 服务器上运行 Test-FederationTrust cmdlet。
验证 Exchange Server 是否对以下两个资源具有出站 Internet 访问权限:
如果使用 OAuth) ,则 Microsoft 联合网关 (或授权服务器
Microsoft 365 的可用性 URL:
https://outlook.office365.com/ews/exchange.asmx
有关详细信息,请参阅 Microsoft 365 URL 和 IP 地址范围 和 联合委派的防火墙注意事项。
确保 Exchange Server 中的系统帐户具有对以下 URL 的 Internet 访问权限。 在每个 Exchange 服务器上执行以下步骤:
运行以下 PsExec 命令以启动从系统帐户启动 Web 浏览器的 PowerShell 会话:
PsExec.exe -i -s "C:\Program Files\Internet Explorer\iexplore.exe"
测试浏览器访问权限, (没有 OAuth) 从系统帐户到以下 Microsoft 联合网关 URL:
https://nexus.microsoftonline-p.com/federationmetadata/2006-12/federationmetadata.xml
浏览器应显示 xml 页。
https://login.microsoftonline.com/extSTS.srf
浏览器应提示下载文件。
https://domains.live.com/service/managedelegation2.asmx
浏览器应显示 ManageDelegation2 支持的操作列表。
测试从系统帐户到以下 Microsoft 授权服务器 URL (OAuth) 的浏览器访问权限:
https://outlook.office365.com/ews/exchange.asmx
浏览器应显示登录提示。
https://login.windows.net/common/oauth2/authorize
浏览器应显示登录错误,“抱歉,我们登录时遇到问题。”
https://accounts.accesscontrol.windows.net/<tenant guid>/tokens/OAuth/2
浏览器应显示 HTTP 状态代码
400 Bad Request
或登录错误消息“抱歉,但我们在登录时遇到问题。
通过检查 Exchange Web Services (EWS) 日志获取忙/闲请求的详细信息:
从 Exchange Online 发出忙/闲请求。
在 EWS 日志中找到 条目,并检查列中的值
time-taken
。 EWS 日志位于 %ExchangeInstallPath%\Logging\Ews 文件夹中。检查默认网站的 W3SVC1 文件夹中的 IIS 日志,验证是否已记录忙/闲请求。 W3SVC1 文件夹路径为
%SystemDrive%\inetpub\logs\LogFiles\W3SVC1
。
指定的成员名称无效或为空
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
S:Fault xmlns:S=“http://www.w3.org/2003/05/soap-envelope"><S:Code><S:Value>S:Sender</S:Value><S:Subcode><S:Value>wst:FailedAuthentication</S:Value></S:Subcode></S:Code><S:Reason><S:Text xml:lang=“en-US”>Authentication Failure</S:Text></S:Reason><S:Detail><psf:error xmlns:psf=“http://schemas.microsoft.com/Passport/SoapServices/SOAPFault"><psf:value>0x80048821</psf:value><psf:internalerror><psf:code>0x80041034</psf:code><psf:text>指定的成员名称无效或为空。 </psf:text></psf:internalerror></psf:error></S:Detail></S:Fault> Microsoft.Exchange.Net.WSTrust.SoapFaultException: Soap fault exception received. at Microsoft.Exchange.Net.WSTrust.SecurityTokenService.EndIssueToken (IAsyncResult asyncResult) microsoft.Exchange.InfoWorker.Common.Availability.ExternalAuthenticationRequest.Complete (IAsyncResult asyncResult)
出现此错误的原因可能为以下任一:
- 请求委派令牌的用户的 Microsoft Entra ID 中存在不一致
- Active Directory 联合身份验证服务中联合用户的配置不一致 (AD FS)
故障排除步骤
完成每个步骤后,检查忙/闲问题是否已修复。
将云用户的 UPN) (用户主体名称更新为使用
onmicrosoft.com
域,然后将 UPN 还原为其以前的值。 例如,如果云用户的 UPN 是user@contoso.com
,请将其更改为临时 UPN;user@contoso.mail.onmicrosoft.com
然后将 UPN 还原为user@contoso.com
。 为此, (Azure AD PowerShell 或 MSOL 服务) 使用以下方法之一:使用 Azure AD PowerShell
运行以下 PowerShell cmdlet:
Connect-AzureAD Set-AzureADUser -ObjectID <original UPN> -UserPrincipalName <temporary UPN> Set-AzureADUser -ObjectID <temporary UPN> -UserPrincipalName <original UPN>
使用 MSOL 服务
运行以下 PowerShell cmdlet:
Connect-MsolService Set-MsolUserPrincipalName -UserPrincipalName <original UPN> -NewUserPrincipalName <temporary UPN> Set-MsolUserPrincipalName -UserPrincipalName <temporary UPN> -NewUserPrincipalName <original UPN>
检查 AD FS 规则、终结点和日志。
在以下 PowerShell cmdlet 的命令输出中搜索与云用户的 相关的
ImmutableID
错误:Test-OrganizationRelationship -Identity "O365 to On-premises*" -UserIdentity <cloud user ID> -Verbose
例如,命令输出可能包含以下错误消息:
“电子邮件地址”XGuNpVunD0afQeVNfyoUIQ==“不正确。 请使用以下格式:用户名、@ 符号,后跟域名。 例如,
tonysmith@contoso.com
或tony.smith@contoso.com
。
+ CategoryInfo: NotSpecified: (:) [Test-OrganizationRelationship], FormatException”如果收到类似的错误消息,请使用以下方法之一,确保
ImmutableId
值为 null (空值) :如果云用户未从本地同步,请在 Exchange Online PowerShell 中运行以下 PowerShell cmdlet 来检查
ImmutableId
值:Get-Mailbox -Identity <cloud mailbox> | FL ImmutableId
ImmutableId
如果值不为 null,请在 Exchange Online PowerShell 中运行以下 PowerShell cmdlet:Set-Mailbox -Identity <cloud mailbox> -ImmutableId $null
如果云用户是从本地同步的,请在 Exchange 命令行管理程序中运行以下命令, (EMS) 检查
ImmutableId
本地用户对象的值:Get-RemoteMailbox -Identity <cloud mailbox> | FL UserPrincipalName,ImmutableId
根据值使用以下方法之一
ImmutableId
:ImmutableId 值为 null
ImmutableId
如果值为 null,请切换其值:ImmutableId
通过在 EMS 中运行以下 PowerShell cmdlet,将远程邮箱对象的 设置为云用户的 UPN:Set-RemoteMailbox -Identity <cloud mailbox> -ImmutableId <UPN>
例如:
Set-RemoteMailbox user@contoso.com -ImmutableId user@contoso.onmicrosoft.com
。通过在 EMS 中运行以下 PowerShell cmdlet,将更改同步到云:
Import-Module ADSync Start-ADSyncSyncCycle -PolicyType Delta
若要验证
ImmutableId
值是否已更新,请在 Exchange Online PowerShell 中运行以下 PowerShell cmdlet:Get-Mailbox -Identity <cloud mailbox> | FL UserPrincipalName,ImmutableId
ImmutableId
通过在 EMS 中运行以下 PowerShell cmdlet,将远程邮箱对象的 还原为 null:Set-RemoteMailbox -Identity <cloud mailbox> -ImmutableId $null
通过在 EMS 中运行以下 PowerShell cmdlet,将更改同步到云:
Start-ADSyncSyncCycle -PolicyType Delta
验证
ImmutableId
值是否已更新。 为此,请在 Exchange Online PowerShell 中运行以下 PowerShell cmdlet:Get-Mailbox -Identity <cloud mailbox> | FL UserPrincipalName,ImmutableId
ImmutableId 值不为 null
ImmutableId
如果值不为 null,请在 EMS 中运行以下命令,将ImmutableId
值设置为 null:Set-RemoteMailbox -Identity <user> -ImmutableId $null
若要验证
ImmutableId
值是否已更新,请在 Exchange Online PowerShell 中运行以下 PowerShell cmdlet:Get-Mailbox -Identity <cloud mailbox> | FL UserPrincipalName,ImmutableId
检查组织关系设置。 有关详细信息,请参阅 揭秘混合闲/忙。
如果为无法查看本地用户的忙/闲信息的云用户生成了错误消息,请执行以下步骤:
结果集包含过多的日历条目
LID:54796
问题
你有一个云用户无法查看另一个云用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
异常:结果集包含过多的日历条目。 允许的大小 = 1000;实际大小 = 5009。
如果单个时间范围中的日历条目数超过 1,000 项,则会发生此错误。 单个忙/闲请求无法检索超过 1,000 个项目。
解决方案
从时间范围中删除某些日历项,以便不超过可在单个忙/闲请求中检索的 1,000 个项目的限制。
有关详细信息,请参阅无法在 Exchange Online 中查看其他用户日历上的忙/闲信息。
工作时间开始时间必须小于或等于结束时间
问题
云用户无法查看会议室列表的忙/闲信息。 诊断问题时,会发现以下错误消息:
异常:Microsoft.Exchange.InfoWorker.Common.InvalidParameterException:工作时间开始时间必须小于或等于结束时间。
Microsoft.Exchange.InfoWorker.Common.MeetingSuggestions.AttendeeWorkHours.Validate (TimeSpan startTime、TimeSpan endTime) 。
如果会议室列表中的会议室邮箱的以下一个或多个日历设置无效,则可能会发生此错误:
WorkingHoursStartTime
WorkingHoursEndTime
WorkingHoursTimeZone
工作时间开始时间必须小于或等于工作时间结束时间,并且必须设置工作时间的时区。
解决方案
要解决此问题,请遵循以下步骤:
运行以下 PowerShell cmdlet,检查会议室列表中每个邮箱的日历设置,以识别具有无效设置的会议室邮箱:
Get-DistributionGroupMember -Identity <room list name> | Get-MailboxCalendarConfiguration | FL Identity,WorkingHours*
运行以下 PowerShell cmdlet 以设置会议室邮箱的必需参数值:
Set-MailboxCalendarConfiguration -Identity <room ID> -WorkingHoursStartTime <start time> -WorkingHoursEndTime <end time> -WorkingHoursTimeZone <time zone>
有关详细信息,请参阅 Set-MailboxCalendarConfiguration。
请求失败,HTTP 状态为 401:未经授权的 (令牌签名无效)
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
System.Net.WebException:请求失败,HTTP 状态为 401:未授权。
运行以下 PowerShell cmdlet 以测试 OAuth 身份验证时:
Test-OAuthConnectivity -Service EWS -TargetUri <external EWS URL> -Mailbox <cloud mailbox ID> -Verbose | FL
将收到以下命令输出:
System.Net.WebException: The remote server returned an error: (401) Unauthorized. Boolean reloadConfig, diagnostics: 2000000; reason="The token has an invalid signature.";error_category="invalid_signature".
注意: TargetUri
Test-OAuthConnectivity 命令中的参数值是外部 Exchange Web Services (EWS) URL,例如 https://mail.contoso.com/ews/exchange.asmx
。
如果 Microsoft 授权服务器设置无效,则可能会出现此错误。
故障排除步骤
完成每个步骤后,检查忙/闲问题是否已修复。
刷新 Exchange 信任的指定 Microsoft 授权服务器上的授权元数据。 在本地 EMS () 中运行以下 PowerShell cmdlet:
Set-AuthServer <name of the authorization server> -RefreshAuthMetadata
等待大约 15 分钟,命令完全生效,或通过在每个 Exchange Server 上的 PowerShell 或命令提示符窗口中运行
iisreset /noforce
命令来重启 IIS。通过在 EMS 中运行以下 PowerShell cmdlet,检查 Exchange 组织中的 Microsoft 授权服务器设置:
Get-AuthServer | FL Name, IssuerIdentifier, TokenIssuingEndpoint, AuthMetadataUrl, Enabled
以下命令输出是有效设置的示例:
Name : WindowsAzureACS IssuerIdentifier : 00000001-0000-0000-c000-000000000000 TokenIssuingEndpoint : https://accounts.accesscontrol.windows.net/XXXXXXXX-5045-4d00-a59a-c7896ef052a1/tokens/OAuth/2 AuthMetadataUrl : https://accounts.accesscontrol.windows.net/contoso.com/metadata/json/1 Enabled : True
如果 Microsoft 授权服务器设置无效,请尝试重新运行混合配置向导,将 Microsoft 授权服务器设置重置为有效值。
请求失败,HTTP 状态为 401:未找到未经授权的 (密钥)
问题
本地用户无法查看云用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
System.Net.WebException:请求失败,HTTP 状态为 401:未授权。
在 EMS 中运行以下 PowerShell cmdlet 以测试 OAuth 身份验证时:
Test-OAuthConnectivity -Service EWS -TargetUri https://outlook.office365.com/ews/exchange.asmx -Mailbox <on-premises mailbox ID> -Verbose | FL
将收到以下命令输出:
System.Net.WebException:远程服务器返回错误: (401) 未授权。
错误:无法从身份验证服务器获取令牌。 错误代码:“invalid_client”。 说明:'AADSTS70002:
验证凭据时出错。 AADSTS50012:客户端断言包含无效签名。 [原因 - 找不到密钥。客户端使用的密钥指纹:“<指纹>”。
如果 Exchange Server 中的 OAuth 证书在 Exchange Online 中不存在,则会发生此错误。
解决方案
若要解决此问题,请使用以下步骤:
确定 Exchange Online 组织中是否存在本地 Exchange Server OAuth 证书:
在 Exchange 命令行管理程序中运行以下 PowerShell cmdlet (EMS) 以获取 Exchange Server 中的 OAuth 证书:
Get-ExchangeCertificate -Thumbprint (Get-AuthConfig).CurrentCertificateThumbprint | FL
命令输出包含
Thumbprint
值。运行以下 PowerShell cmdlet 以使用 MSOL 服务获取 Exchange Online OAuth 证书:
Connect-MsolService Get-MsolServicePrincipalCredential -ServicePrincipalName "00000002-0000-0ff1-ce00-000000000000" -ReturnKeyValues $true
Value
如果命令输出中的参数值为空,则 Exchange Online 中不存在 OAuth 证书。 在这种情况下,请转到步骤 3,将本地证书上传到 Exchange Online。Value
如果参数值不为空,请将该值保存到扩展名为“.cer”的文件。 在 Microsoft 证书管理器工具 中打开文件以查看 Exchange Online OAuth 证书。 将Thumbprint
Exchange Online 证书中的值与在步骤 1a 中获取的本地证书的指纹进行比较。 如果指纹值匹配,请转到步骤 4。 如果指纹值不匹配,请选择以下选项之一:转到步骤 2,将现有的本地证书替换为 Exchange Online 证书。
转到步骤 3,将现有 Exchange Online 证书替换为本地证书。
将现有的本地证书替换为 Exchange Online 证书:
运行以下 PowerShell cmdlet 以更新本地证书指纹:
Set-AuthConfig -NewCertificateThumbprint <thumbprint of Exchange Online certificate> -NewCertificateEffectiveDate (Get-Date)
如果收到证书生效日期不到 48 小时的通知,请接受提示以继续。
运行以下 PowerShell cmdlet 以发布本地证书:
Set-AuthConfig -PublishCertificate
运行以下 PowerShell cmdlet 以删除对上一个证书的任何引用:
Set-AuthConfig -ClearPreviousCertificate
转到步骤 4。
运行以下 PowerShell cmdlet,检查本地身份验证配置中的 SPN 是否为
00000002-0000-0ff1-ce00-000000000000
:Get-AuthConfig | FL ServiceName
如果 SPN 值不同,请运行以下 PowerShell cmdlet 来更新 SPN:
Set-AuthConfig -ServiceName "00000002-0000-0ff1-ce00-000000000000"
代理 Web 请求失败:响应格式不正确
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
代理 Web 请求失败。内部异常:响应格式不正确
如果为本地用户运行 同步、通知、可用性和自动答复测试 ,则会收到以下错误消息:
从服务收到的响应不包含有效的 XML
这些错误可能由于以下任何原因而发生:
- 外部 Exchange Web Services (EWS) 问题
- 网络设备配置错误,例如反向代理或防火墙
故障排除步骤
完成每个步骤后,检查忙/闲问题是否已修复。
检查来自 Exchange Online 的忙/闲请求是否可以访问 Exchange 服务器上的 IIS。 执行忙/闲查询,然后在 IIS 日志中搜索具有 HTTP 状态代码
200 OK
的条目,或者在401 Unauthorized
查询时搜索这些条目。 这些条目指示忙/闲请求到达 IIS。 注意:IIS 日志中的时间戳使用 UTC 时间。如果未找到这些条目,请检查反向代理和防火墙日志,以确定忙/闲请求停滞的位置。
执行忙/闲查询,然后在 Windows 事件查看器中的 Exchange Server 应用程序日志中搜索查询时创建的条目,以帮助缩小问题原因的范围。
无法连接到远程服务器
问题
本地用户无法查看云用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
无法与
https://login.microsoftonline.com/extSTS.srf
通信,内部异常:无法连接到远程服务器。
如果一个或多个 Exchange 服务器无法连接到 Microsoft 联合网关 URL,则可能会出现此错误。
故障排除步骤
完成每个步骤后,检查忙/闲问题是否已修复。
在 Exchange 命令行管理程序中运行以下 PowerShell cmdlet (EMS) ,以检查是否可以检索委派令牌:
Test-OrganizationRelationship -Identity "On-premises to O365*" -UserIdentity <on-premises user ID> -Verbose Test-FederationTrust -UserIdentity <on-premises user ID> -Verbose Test-FederationTrustCertificate
验证本地 Exchange 服务器是否对以下两个资源具有出站 Internet 访问权限:
Microsoft 联合网关或 Microsoft 授权服务器(如果使用 OAuth 身份验证)。
Microsoft 365 的可用性 URL:
https://outlook.office365.com/ews/exchange.asmx
。
有关详细信息,请参阅 Microsoft 365 URL 和 IP 地址范围 和 联合委派的防火墙注意事项。
验证 Exchange Server 中的系统帐户是否具有对以下 URL 的 Internet 访问权限。 在组织中的所有 Exchange 服务器上执行以下步骤:
运行以下 PsExec 命令以启动从系统帐户启动 Web 浏览器的 PowerShell 会话:
PsExec.exe -i -s "C:\Program Files\Internet Explorer\iexplore.exe"
测试浏览器访问权限 (没有 OAuth 身份验证) 从系统帐户到以下 Microsoft 联合网关 URL:
https://nexus.microsoftonline-p.com/federationmetadata/2006-12/federationmetadata.xml
浏览器应显示 xml 页。
https://login.microsoftonline.com/extSTS.srf
浏览器应提示下载文件。
https://domains.live.com/service/managedelegation2.asmx
浏览器应显示 ManageDelegation2 支持的操作列表。
测试从系统帐户到以下 Microsoft 授权服务器 URL (OAuth 身份验证) 的浏览器访问权限:
https://outlook.office365.com/ews/exchange.asmx
浏览器应显示登录提示。
https://login.windows.net/common/oauth2/authorize
浏览器应显示登录错误消息,“抱歉,我们登录时遇到问题。”
https://accounts.accesscontrol.windows.net/<tenant guid>/tokens/OAuth/2
浏览器应显示 HTTP 状态代码
400 Bad Request
或登录错误消息,“抱歉,但我们在登录时遇到问题。
电子邮件地址的自动发现失败:无法解析远程名称
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
电子邮件地址用户电子邮件地址>的自动发现失败<,出现 System.Net.WebException 错误:无法解析远程名称:“<本地主机名>”。
如果本地自动发现终结点 URL 或公共 DNS 设置不正确,则可能会出现此错误。
故障排除步骤
完成每个步骤后,检查忙/闲问题是否已修复。
在 Exchange Online PowerShell 中运行以下 PowerShell cmdlet 以获取 参数的值
TargetAutodiscoverEpr
:Get-IntraOrganizationConnector | FL TargetAutodiscoverEpr Get-OrganizationRelationship | FL TargetAutodiscoverEpr
例如,如果错误消息
mail.contoso.com
中的本地主机名值为 ,则自动发现终结点 URL 可能是https://autodiscover.contoso.com/autodiscover/autodiscover.svc
。TargetAutodiscoverEpr
如果参数值正确,请转到步骤 3。 否则,请转到步骤 2。使用以下方法之一更新自动发现终结点 URL:
(HCW) 运行混合配置向导以还原默认的自动发现终结点。
通过运行以下任一 PowerShell cmdlet 手动更新
DiscoveryEndpoint
参数或TargetAutodiscoverEpr
参数:Set-IntraOrganizationConnector -Identity <cloud connector ID> -DiscoveryEndpoint <Autodiscover endpoint URL>
Set-OrganizationRelationship <O365 to On-premises*> -TargetAutodiscoverEpr <Autodiscover endpoint URL>
确保错误消息中的本地主机名 (例如:
mail.contoso.com
) 可在公共 DNS 中解析。 主机名的 DNS 条目应指向自动发现终结点 URL 处的本地自动发现服务。注意:如果无法解决此问题,并且需要临时解决方法,请运行以下任一 PowerShell cmdlet,将参数值手动更新
TargetSharingEpr
为外部 Exchange Web Services (EWS) URL。 外部 EWS URL 应类似于https://<EWS hostname>/ews/exchange.asmx
,并且可在 DNS 中解析。Set-IntraOrganizationConnector <cloud connector ID> -TargetSharingEpr <external EWS URL>
Set-OrganizationRelationship <O365 to On-premises*> -TargetSharingEpr <external EWS URL>
注意
如果设置
TargetSharingEpr
参数值,云邮箱将绕过自动发现并直接连接到 EWS 终结点。
未能获取 ASURL。 错误 8004010F
问题
本地用户无法查看云用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
未能获取 ASURL。 错误 8004010F。
这是与自动发现服务相关的常规错误。
故障排除步骤
完成每个步骤后,检查忙/闲问题是否已修复。
确保受影响的用户的自动发现返回该用户的 Exchange Web Services (EWS) URL。
在受影响用户的 Outlook 客户端中运行 电子邮件自动配置测试 ,以确保自动发现返回用户的 EWS URL。
确保忙/闲在托管在不同 Exchange 服务器上的本地用户之间工作。
如果有负载均衡器,请检查负载均衡器是否导致了此问题。 为此,请在安装了用户的 Outlook 客户端的计算机上 修改 Windows 主机文件 () ,以绕过负载均衡器并指向特定的客户端访问服务器。
如果忙/闲在本地用户之间工作,请检查是否所有本地 Exchange 服务器都具有对 Microsoft 365 URL 和 IP 地址范围的出站访问权限。
检查每个 Exchange 服务器是否可以检索委派令牌。 为此,请在所有本地 Exchange 服务器上的 EMS 中运行以下 PowerShell cmdlet:
Test-FederationTrust -UserIdentity <on-premises user ID> -Verbose
如果命令无法检索委派令牌,请检查服务器是否可以在代理或防火墙级别连接到 Office 365。
代理 Web 请求失败:对象已移动
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
代理 Web 请求失败。 ,内部异常:System.Net.WebException:请求失败并显示错误消息:对象移动。
如果组织设置中的 TargetSharingEpr
参数值设置为不正确的 Exchange Web Services (EWS) 终结点 URL,则可能会出现此错误。
可以运行以下 PowerShell cmdlet,从组织设置 (组织内部连接器或组织关系) 获取 TargetSharingEpr
参数值:
Get-IntraOrganizationConnector | FL TargetSharingEpr
Get-OrganizationRelationship | FL TargetSharingEpr
验证 TargetSharingEpr
参数值是否未在公共 DNS 中解析。
注意:混合配置向导 (HCW) 不会为 TargetSharingEpr
参数设置值,除非选择“使用 Exchange 新式混合技术安装混合代理”。 在这种情况下,HCW 将 TargetSharingEpr
参数设置为类似于 https://<GUID>.resource.mailboxmigration.his.msappproxy.net/ews/exchange.asmx
的外部 EWS URL 终结点值。 还可以手动设置 TargetSharingEpr
参数值。
TargetSharingEpr
如果该值设置为终结点,Outlook 将绕过自动发现并直接连接到该终结点。
解决方案
若要解决此问题,请运行以下命令之一,将参数值手动更新 TargetSharingEpr
为 DNS 中解析的外部 EWS URL:
Set-IntraOrganizationConnector <cloud connector ID> -TargetSharingEpr <external EWS URL>
Set-OrganizationRelationship <O365 to On-premises*> -TargetSharingEpr <external EWS URL>
请求已中止:无法创建 SSL/TLS 安全通道
问题
云用户无法查看本地用户的忙/闲信息,反之亦然。 诊断问题时,会发现以下错误消息:
请求已中止:无法创建 SSL/TLS 安全通道。
原因 1:云用户无法查看本地用户的忙/闲信息
如果在 Microsoft 365 连接到的本地终结点(如 Exchange Server 或防火墙)中配置错误或禁用 TLS 1.2,则可能会出现此问题。
原因 2:本地用户无法查看云用户的忙/闲信息
此问题也可能由以下任一原因导致:
故障排除步骤
使用以下工具诊断本地 TLS 1.2 问题:
- 在 Microsoft 远程连接分析器中运行 SSL 服务器测试 。
- 在每个 Exchange 服务器上运行 Exchange 命令行管理程序中的 HealthChecker 脚本 (EMS) 。
有关 TLS 配置的信息,请参阅 Exchange Server TLS 配置最佳做法 和 准备 TLS 1.2。
有关如何在受信任的根 CA 存储中检查证书的信息,请参阅 使用 MMC 管理单元查看证书。
有关支持的 TLS 密码套件的信息,请参阅 Microsoft 365 支持的 TLS 密码套件。
令牌中由用户上下文指定的用户不存在
问题
本地用户无法查看云用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
令牌中由用户上下文指定的用户不存在。 error_category=“invalid_user”。 401:未授权。
如果运行 Test-OAuthConnectivity PowerShell cmdlet,则会收到相同的错误消息。
如果本地用户邮箱和 Microsoft Entra ID 中的相应邮件用户对象未同步,则可能会发生此错误。 在它们同步之前,Microsoft Entra ID 中的邮件用户对象可能未预配。
解决方案
若要解决此问题,请使用 Microsoft Entra Connect 同步本地用户和 Microsoft Entra ID 中的相应邮件用户对象。
访问群体声明值的主机名组件无效
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
访问群体声明值“https://< hybrid.domain.com>”的主机名组件无效;error_category=“invalid_resource”
出现此错误的原因有以下任一。
原因 1
SSL 卸载和 OAuth 身份验证都已启用。 如果启用了 OAuth 身份验证,则 SSL 卸载不起作用。
原因 2
Exchange Server 前面的网络设备正在阻止忙/闲请求。
解决方案
原因 1 的解决方法
选择以下解决方法之一:
在本地环境中对 Exchange Web Services (EWS) 和自动发现禁用 SSL 卸载。 有关详细信息,请参阅 为自动发现配置 SSL 卸载 和 为 EWS 配置 SSL 卸载和 默认 SSL 设置。
运行以下 PowerShell cmdlet,通过禁用云组织内部连接器来禁用 OAuth 身份验证:
Set-IntraOrganizationConnector "HybridIOC*" -Enabled $false
禁用组织内部连接器时,将通过组织关系启用 DAuth 身份验证。 若要检查组织关系,请运行以下 PowerShell cmdlet:
Get-OrganizationRelationship
有关组织关系设置的详细信息,请参阅 揭秘混合忙/闲。
原因 2 的解决方案
将 Exchange 前面的网络设备配置为不阻止忙/闲请求。
代理 Web 请求失败,HTTP 状态为 503:服务不可用
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
代理 Web 请求失败,内部异常:System.Net.WebException:请求失败,HTTP 状态为 503:服务不可用...
如果存在已停止的 Microsoft Windows 服务、服务器组件、IIS 应用程序池或配置错误的终结点,则可能会出现此错误。
故障排除步骤
完成每个步骤后,检查忙/闲问题是否已修复。
确保 Exchange Server 所需的 Windows 服务正在运行。 若要检查服务的状态,请在组织中的每个 Exchange 服务器上运行以下 PowerShell cmdlet:
Test-ServiceHealth
使用服务控制台启动 Exchange Server 所需的任何已停止的服务。
检查所需的 Exchange Server 组件是否处于活动状态。 若要检查组件的状态,请在组织中的每个 Exchange 服务器上运行以下 PowerShell cmdlet:
Get-ServerComponentState <server name>
若要激活非活动组件,请使用 Set-ServerComponentState PowerShell cmdlet。
确保已启动 Exchange Web Services (EWS) 和自动发现的以下 IIS 应用程序池:
- MSExchangeServicesAppPool
- MSExchangeSyncAppPool
- MSExchangeAutodiscoverAppPool
测试自动发现终结点是否有效。 请按照下列步骤操作:
运行以下 PowerShell cmdlet,从
DiscoveryEndpoint
或TargetAutodiscoverEpr
参数值获取自动发现终结点 URL:Get-IntraOrganizationConnector | FL DiscoveryEndpoint Get-OrganizationRelationship | FL TargetAutodiscoverEpr
在 Web 浏览器中导航到自动发现终结点 URL,或运行
Invoke-WebRequest -Uri "<endpoint URL>" -Verbose
PowerShell cmdlet,以确保 URL 有效。 最好检查外部网络的 URL。
按照以下步骤测试 EWS URL 是否有效:
运行以下 PowerShell cmdlet,从
TargetSharingEpr
组织设置中的参数值获取 EWS URL:Get-IntraOrganizationConnector | FL TargetSharingEpr Get-OrganizationRelationship | FL TargetSharingEpr
b. 在 Web 浏览器中导航到 EWS URL,或运行
Invoke-WebRequest -Uri "<endpoint URL>" -Verbose
PowerShell cmdlet 以确保 URL 有效。 最好检查外部网络的 URL。检查 IIS 日志中是否有返回 HTTP 状态代码
503 Service Unavailable
的忙/闲请求:从 Exchange Online 发出忙/闲请求。
检查每个 Exchange 服务器上的默认网站的 W3SVC1 文件夹中 IIS 日志中的 HTTP 状态代码
503 Service Unavailable
条目。 W3SVC1 文件夹路径为%SystemDrive%\inetpub\logs\LogFiles\W3SVC1
。 这些条目可帮助识别出现问题的服务器。如果忙/闲请求未记录在 W3SVC1 文件夹中,请检查请求是否记录在每个 Exchange 服务器上的 HTTPERR 文件夹中的错误日志中。 HTTPERR 文件夹路径为
%SystemRoot%\System32\LogFiles\HTTPERR
。 如果忙/闲请求记录在 HTTPERR 日志中,请检查错误配置的 IIS 设置。
检查连接到本地 EWS URL 时收到的服务器响应标头,验证 IIS (不是其他 Web 服务器) 发送响应。 为此,请在未连接到本地 EWS 的 PowerShell 会话中运行以下命令, (不运行 Exchange 命令行管理程序) 中的命令:
$req = [System.Net.HttpWebRequest]::Create("<EWS URL>") $req.UseDefaultCredentials = $false $req.GetResponse() $ex = $error[0].Exception $ex.InnerException.Response $resp.Headers["Server"]
例如,如果在命令输出中看到“Microsoft-HTTPAPI/2.0”而不是“Microsoft -IIS/10.0”,则可能是 Web 应用程序代理 (WAP) 服务 (IIS) 响应请求。 检查 WAP 服务是否关闭。
代理 Web 请求失败,HTTP 状态为 504:网关超时
LID:43532
问题
云用户无法查看本地用户的忙/闲信息。 诊断问题时,会发现以下错误消息:
代理 Web 请求失败,内部异常:请求失败,HTTP 状态为 504:网关超时...
如果组织中的混合代理配置不正确,则可能会出现此错误。
解决方案
若要解决此问题,请使用以下步骤。 完成每个步骤后,检查忙/闲问题是否已修复。
检查
TargetSharingEpr
组织设置中的参数值。 该值应类似于https://<GUID>.resource.mailboxmigration.his.msappproxy.net/EWS/Exchange.asmx
。 若要确定 参数的值TargetSharingEpr
,请运行以下 PowerShell cmdlet:Get-IntraOrganizationConnector | FL TargetSharingEpr Get-OrganizationRelationship | FL TargetSharingEpr
TargetSharingEpr
如果参数值不正确:(HCW) 运行混合配置向导,然后选择“ 使用 Exchange 经典混合拓扑”。
重新运行 HCW,然后选择“ 使用 Exchange 新式混合拓扑”。 此过程强制 HCW 重置
TargetSharingEpr
参数值。
检查安装混合代理的服务器上的 Microsoft 混合服务的状态。 如果服务已停止,请启动它。
检查混合代理的状态。 如果状态为 “非活动”:
(HCW) 运行混合配置向导,然后选择“ 使用 Exchange 经典混合拓扑”。
重新运行 HCW,然后选择“ 使用 Exchange 新式混合拓扑”。 此过程强制 HCW 重新安装混合代理。
安装 混合代理 PowerShell 模块,然后运行 Get-HybridApplication PowerShell cmdlet 以查找混合代理指向的内部 URL。
浏览到在步骤 3 中找到的内部 URL。 解决发现的任何错误,例如证书错误。
将混合代理配置为将请求定向到负载均衡器 而不是运行 Microsoft Exchange Server 的服务器,以排除该服务器上可能存在的问题。