我有Windows服务,该服务使用具有模拟访问权限的EWS 监听本地Exchange邮箱。
我有一个具有模拟访问权限的管理员用户(服务帐户),并且已经为Windows服务登录配置了同一用户。
我正在C#.Net中使用 NTLM身份验证登录并模拟邮箱。当我启动Windows服务并尝试模拟邮箱时,即使我可以模拟访问服务帐户,也遇到以下错误。
“Error While initial sync for mailbox SCHEDTEST91@SCHED2010.COM. Exception: Microsoft.Exchange.WebServices.Data.ServiceResponseException: The account does not have permission to impersonate the requested user.
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ProcessWebException(WebException webException)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request)
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request)
at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
at SXA.ES.EWSNotificationListenerService.NotificationListener.NotificationSynchronizerBase.GetCurrentSyncState(String smtpAddress, String autodiscoverUrl)”
惊喜的部分是,此问题发生在托管Windows服务的特定虚拟机上。
我总共有4个虚拟机,而4个虚拟机中有一个,Windows Service可以正常工作,并且可以模拟2个虚拟机上的邮箱,但是具有相同配置和相同设置的其他2个虚拟机都具有上述错误。
这是创建OnPremise Exchange服务的代码:
public ExchangeService CreateOnPremiseExchangeService(ExchangeServiceProperties properties)
{
var exchangeService = CreateExchangeService(properties);
exchangeService.UseDefaultCredentials = true;
return exchangeService;
}
private static ExchangeService CreateExchangeService(ExchangeServiceProperties properties)
{
var exchangeService = new ExchangeService(properties.ExchangeVersion)
{
Url = properties.ExchangeUri,
ReturnClientRequestId = true,
SendClientLatencies = true,
UserAgent = properties.UserAgent
};
if (properties.TraceListener != null)
{
exchangeService.TraceListener = properties.TraceListener;
exchangeService.TraceFlags = TraceFlags.All;
exchangeService.TraceEnabled = true;
}
if (!string.IsNullOrWhiteSpace(properties.TargetMailbox))
{
exchangeService.ImpersonatedUserId = new ImpersonatedUserId(
ConnectingIdType.SmtpAddress,
properties.TargetMailbox);
}
return exchangeService;
}
我尝试在Google上进行大量搜索以查找此问题,但找不到任何帖子。
我正在这里寻求帮助以解决此问题。请让我知道是否有人在使用带有C#.Net的EWS Service时遇到相同的问题,并对此有解决方案。
注意:如果我在这里使用基本身份验证,那么它在这两个VM上也可以正常工作,此问题仅在NTLM Windows身份验证中发生。
答案 0 :(得分:0)
我已进一步调查并找到了此问题的根本原因,请参阅下面的详细信息以及如何解决此问题。
我的建议是,避免在VM上配置Outlook。 这将如何帮助您。