0
votes

I am getting the EWS URL as below:

var response = myAutodiscoverService.GetUserSettings(
                        "userA@domain.com",
                        UserSettingName.ExternalEwsUrl,
                        UserSettingName.InternalEwsUrl,
                        UserSettingName.EwsSupportedSchemas);

string settingValue;
if (response.TryGetSettingValue(UserSettingName.ExternalEwsUrl, out settingValue)
    || response.TryGetSettingValue(UserSettingName.InternalEwsUrl, out settingValue))
{
    // If ExternalEwsUrl is not returned in the response, 
    // we consider InternalEwsUrl for auto-discover
    string ewsurl = settingValue;
}

Now, I am caching this ewsurl I get with this request as recommended since auto-discovery is really slow. What happens when this ewsurl expires (because let's say user's mailbox was moved to a different endpoint). What error should I expect in order to implement a failure mechanism to get the new updated ews url?

Edit: I am using the ews url to subscribe for new mail events on EWS using ExchangeService.SubscribeToPushNotifications So I have another question, suppose if the ews url was changed after user subscribed for notifications, will I get a notification for that user for a new mail event on the callback url of my application?

1

1 Answers

0
votes

I seem to recall the ROT from MSFT was you should re-autodiscover every 24 hours, but I've not seen anything recently. As to the Push notifications: since there is a "heartbeat" facility in Push notifications, if you miss two heartbeats in a row, it's safe to say you should tear down the subscription and re-subscribe, which to be safe, implies re-autodiscovery. Of course with O365, since the EWS URL seems (for now) to always be the same, re-autodiscovery is less of a concern.