繁体   English   中英

不断收到“Exchange Web 服务当前不可用于此请求,因为”错误?

[英]Keep getting "Exchange Web Services are not currently available for this request because" error?

我们有一个应用程序以交换用户身份登录并执行简单的任务,例如删除/保存/发送电子邮件等。我在 Splunk 报告中看到很多两个错误:

“Exchange Web 服务当前不可用于此请求,因为目标站点中的任何客户端访问服务器都无法处理该请求”

“删除电子邮件时出现问题 [项目 ID:(项目 ID 字符串)] - 在商店中找不到指定的对象。,该过程未能获得正确的属性。”

我已经读过包含以下内容很重要: service.HttpHeaders.Add("X-AnchorMailbox", MailboxToAccess); 当冒充用户时,这可能是问题所在,但是当您只是以用户身份登录时呢?

这是我们设置交换服务的代码:

    public ExchangeServiceClient(ILog logger, IContentTypeHelper contentTypeHelper)
    {
        _logger = logger;
        _contentTypeHelper = contentTypeHelper;

        if (EvidenceSettings.Default.AppEmailUserName.Equals("Windows Credentials", StringComparison.OrdinalIgnoreCase))
        {
            _exchangeService = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
            _exchangeService.Url = new Uri(PartnerEvidenceSettings.Default.ExchangeServiceAddress);
        }
        else
        {
            _exchangeService = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
            _exchangeService.Url = new Uri(EvidenceSettings.Default.ExchangeServiceAddress);
            _exchangeService.Credentials = new WebCredentials(EvidenceSettings.Default.AppEmailUserName, EvidenceSettings.Default.AppEmailPassword);
            _exchangeService.TraceEnabled = true;
            _exchangeService.UseDefaultCredentials = false;
        }
    }

这是我们何时使用该服务的示例(只是一个示例,但所有功能都非常相似):

    public void DeleteMailMessage(string identifier)
    {
        // If this email was an attachment in another email, then only delete the container email
        if (identifier != null)
        {
            try
            {
                var ids = new[] { new ItemId(identifier) };
                var responseCollection = _exchangeService.DeleteItems(ids, DeleteMode.MoveToDeletedItems, null, null);
                foreach (var response in responseCollection)
                {
                    if (response.Result == ServiceResult.Error)
                    {
                        _logger.Error($"Problem deleting email [ item id: {identifier} ] - {response.ErrorMessage}");
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error($"Error deleting email [ item id: {identifier} ]", ex);
            }
        }
    }

我的问题是,我们是否需要包含 HTTPHEADERS,还是其他原因导致了这个问题? 如果不是这样,我不太确定可能导致此错误的原因。

这两个错误是不同的,通常没有关系

“Exchange Web 服务当前不可用于此请求,因为目标站点中的任何客户端访问服务器都无法处理该请求”

通常这是一个路由错误,所以是的,无论是否模拟,您都应该始终包含 X-AnchorMailbox 标头。 (例如,如果您查看任何 Microsoft 邮件客户端 Outlook、OWA、Outlook Mobile,您将始终看到这些标题)。

“删除电子邮件时出现问题 [项目 ID:(项目 ID 字符串)] - 在商店中找不到指定的对象。,该过程未能获得正确的属性。”

这通常是项目错误或权限错误,例如无法访问邮箱本身或您尝试访问邮箱中的审核文件夹等内容。这也可能意味着相关项目已在邮箱中移动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM