Я использую Microsoft Exchange Web Services 1.1 SDK и использую потоковое соединение для подписки на уведомления о новой почте.Все отлично работает для получения уведомлений, но время от времени я получаю ошибки о том, что Exchange не может найти мою подписку.
Ниже приведен код, который я использую для инициализации своей подписки, и события, которые я использую.
public void Subscribe()
{
var locateMailbox = new Mailbox
{
Address = "myemail"
};
var folderId = new FolderId(WellKnownFolderName.Inbox, locateMailbox);
var foldersToWatch = new[] {folderId};
StreamingSubscription streamingSubscription =
_exchangeService.SubscribeToStreamingNotifications(foldersToWatch, EventType.NewMail);
// Timeout is set at 1 minute intentionally
var streamingConnection = new StreamingSubscriptionConnection(_exchangeService, 1);
streamingConnection.AddSubscription(streamingSubscription);
streamingConnection.OnSubscriptionError += ResolveError;
streamingConnection.OnDisconnect += Reconnect;
streamingConnection.Open();
}
public void Reconnect(object sender, SubscriptionErrorEventArgs disconnectEventArgs)
{
if (!((StreamingSubscriptionConnection)sender).IsOpen)
((StreamingSubscriptionConnection)sender).Open();
}
public void ResolveError(object sender, SubscriptionErrorEventArgs errorEventArgs)
{
var streamingSubscriptionConnection =
(StreamingSubscriptionConnection) sender;
if (!streamingSubscriptionConnection.IsOpen)
streamingSubscriptionConnection.Open();
}
ServiceLocalException - You must add at least one subscription to this connection before it can be opened.
Это исключение говорит само за себя, и я знаю, что могу просто создать еще одну подписку внутри Reconnect()
.Я надеюсь, что кто-то может помочь мне понять, куда идет подписка.Я не могу представить, что такой продукт, как Exchange 2010, просто потеряет мою подписку.Кроме того, я не могу точно указать ошибку.Иногда я могу поддерживать свою подписку активной в течение 10 минут, а иногда я получаю сообщение об ошибке, что моя подписка недействительна через 2-3 минуты.
Для чего я использую Exchange 2010 SP1.