0
使用Exchange EWS托管API 2.0,这里是我使用的验证凭据其中一个方法:如何验证Exchange凭据登录并使用EWS托管API验证Exchange服务器通信?
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。 是否有可能找出是否存在问题传送给服务器(如服务器停机)?这样做的原因是我要通知无效的凭证而不是服务器停机的用户!
的问题是,你如何服务器停机时间和无效的凭证区分?因为使用我的代码都返回未经授权。 – Ryan
如果你得到一个401那么你的凭据是没有任何好处的,与证书不认为在Exchange你只是验证的条款。定义停机时间?如果CAS是下来,你不会得到响应,如果Maillbox服务器关闭,但CAS是高达你应该得到500错误。如果两台服务器都启动了,但商店没有安装,那么你会得到一个特定的EWS错误。如果您的证书可以在EWS之外进行验证,您需要具体说明。 –