我正在使用EWS来订阅新邮件通知的C#客户端。 我们目前在我们的环境中拥有4台客户端访问服务器。 如果我使用自动发现来find正确的CAS,我经常会得到看似错误的CAS。 我知道什么时候选错了,因为如果我给自己发送一封电子邮件(应该触发一个新的邮件通知),我的客户从未被通知。 如果我硬编码了我希望连接的CAS(这是一个猜测游戏),但是当邮箱移动客户端访问服务器时停止工作,我能够获得一段时间的通知(时间未定)。 我正在使用InternalEwsUrl 。 这是完整修补的Exchange 2010 SP1服务器。
看看堆栈跟踪,我发现它正确地find了优先级为1的所有4个客户端访问服务器。它总是select最上面的CAS(假设这是默认行为),这往往是不正确的。
任何想法,为什么我不总是解决适当的CAS?
注意:我是开发人员而不是系统pipe理员,所以如果我说了一些没有意义或者需要澄清的内容,请告诉我。
在Exchangepipe理shell中,键入
Get-ExchangeServer Get-Mailbox [user] | fl Database
这将告诉你有多lessExchange服务器,安装了什么angular色,以及它们属于哪个站点。 第二个命令会告诉你你在哪个数据库上。 自动发现将在您的邮箱服务器的Active Directory站点中find任何 CAS(您连接的CAS必须位于同一站点中)。 有几件事你需要检查。
SCP对每个CAS都是正确的。 如果它是该站点中唯一的CAS,则应该指向自身,否则应该是负载平衡器名称(VIP)。
Get-ClientAccessServer | fl AutoDiscoverServiceInternalUri
站点内每个数据库的RPCClientAccessServer应该指向上述的CAS /数组。 Get-MailboxDatabase | fl Server,Database,RPC*
站点中每个CAS的EWS的内部URL也应该指向相同的CAS /数组。 同时validation每个服务器上EWS虚拟目录的设置是否相同。 由于网站中的任何CAS都可以满足您的请求,所以EWS可能只是针对特定的服务器进行错误configuration。
Get-WebServicesVirtualDirectory | fl Identity,*auth*,*URL