Domanda

Sto utilizzando Microsoft Exchange Web Services 1.1 SDK e utilizzando la connessione di streaming per iscriverti alla nuova notifica di posta. Tutto funziona bene per ricevere le notifiche, ma ricevo errori ogni tanto sul mio scambio non riuscendo a trovare il mio abbonamento.

Di seguito è riportato il codice che sto usando per inizializzare il mio abbonamento e gli eventi che utilizzo.

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.

Quell'eccezione parla da sola e sono consapevole che posso semplicemente creare un altro abbonamento all'interno di Reconnect(). Spero che qualcuno possa aiutarmi a capire dove sta andando l'abbonamento. Non riesco a immaginare un prodotto come Exchange 2010, perderebbe semplicemente il mio abbonamento. Inoltre, non riesco a fissare l'errore. A volte posso mantenere il mio abbonamento attivo per 10 minuti e altre volte ricevo un errore sul fatto che il mio abbonamento non è valido dopo 2-3 minuti.

Per quello che vale la pena usare Exchange 2010 SP1.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top