【发布时间】:2026-02-02 10:50:01
【问题描述】:
使用 Exchange EWS 托管 API 2.0,这是我用来验证凭据的方法:
public static bool TestExchangeConnetion(UserSettingDTO credential, ServerSettingDTO serverSetting)
{
bool authenticated = false;
Microsoft.Exchange.WebServices.Data.ExchangeService service;
service = new ExchangeService((ExchangeVersion)Enum.Parse(typeof(ExchangeVersion), serverSetting.ExchangeVer));
service.Url = new Uri(serverSetting.ExchangeURL);
service.Credentials = new NetworkCredential(credential.ExchangeUsername, credential.ExchangePassword);
try
{
//make a call to ensure that credentials are working
AlternateIdBase response = service.ConvertId(new AlternateId(IdFormat.EwsId, "Placeholder", credential.ExchangeUsername), IdFormat.EwsId);
}
// The credentials were authenticated. We expect this exception since we are providing intentional bad data for ConvertId
catch (ServiceResponseException)
{
authenticated = true;
}
// The credentials were not authenticated.
catch (ServiceRequestException)
{
authenticated = false;
}
catch (Exception)
{
authenticated = false;
}
return authenticated;
}
这绝对可以很好地验证凭据,但我正在寻找一种方法来区分无效凭据和 Exchange 服务器停机时间。此代码对两者都返回 false。 是否可以查明与服务器通信是否存在问题(如服务器停机时间)?这样做的原因是我想通知用户无效凭据而不是服务器停机时间!
【问题讨论】:
标签: c# exchangewebservices ews-managed-api