C#EWS检查用户凭证是否错误或服务是否无法访问

时间:2018-11-06 15:19:17

标签: c# exchangewebservices

我正在使用EWS(2.2.1.0),我需要在应用程序中阅读电子邮件以自动执行某些任务。 如果插入的凭据错误,或者如果连接丢失,我想显示一条警告消息,只需在状态栏中显示错误图标即可。

我需要区分用户凭据是否错误或只是缺少连接。
问题在于 AutodiscoverUrl()方法在两种情况下返回相同的 AutodiscoverLocalException

  

找不到自动发现服务。

这很奇怪,没有道理。

我的代码如下:

    try
    {
        exService.TraceEnabled = true;
        exService.Credentials = new WebCredentials(UserSettings.Email.EmailAddress, UserSettings.Email.EmailPassword);
        exService.AutodiscoverUrl(UserSettings.Email.EmailAddress, (string redirectionUrl) => {
            bool result = false;
            Uri redirectionUri = new Uri(redirectionUrl);

            if (redirectionUri.Scheme == "https")
                result = true;

            return result;
        });
    }
    catch(Exception ex)
    {
        Thread.Sleep(ApplicationSettings.General.WaitForNextConnectionRetry);
    }

有人可以向我解释如何检查用户凭据是否错误或服务无法访问吗?

预先感谢

1 个答案:

答案 0 :(得分:1)

测试示例链接:Get started with EWS Managed API client applications

我认为没有区分用户凭证或Uri的好方法。对于我来说,我只是添加“ try catch”来检测错误。另外,我测试了上面的示例代码,并提供了错误的密码。然后在service.AutodiscoverUrl行中发生错误。请查看跟踪消息:

enter image description here

或者我们可以获取跟踪消息来检测它。