2016-05-03 8 views
0

Ich versuche, Kalenderbenachrichtigungen mithilfe Stream-Listener zu erhalten.EWS-Exchange - NULL-Verweis beim Übermitteln von NotificationEvent an ItemEvent

Überall im Internet sieht das Beispiel preaty sehr ähnlich. Aber in meinem Fall, wenn ich NotificationEvent an ItemEvent austausche, um ItemId zu erhalten, läuft der Cast gut, aber Objekt ist immer null. Intern ist die NotificationEvent FolderEvent (die ItemId nicht hat), jedenfalls wird es immer an ItemEvent geworfen.

public void OnNotificationEvent(object sender, NotificationEventArgs args) 
    { 
     foreach (NotificationEvent notification in args.Events) 
     { 
      ItemEvent itemEvent = notification as ItemEvent; 
      ... //Other code goes here 
     } 
    } 

Antwort

1

Je nachdem, welche Arten Sie beide Artikel und Ordner Benachrichtigungsereignisse abonniert haben sollte erwartet werden, so dass Sie die Art der Benachrichtigung zB erste sein sollte

 if (notification is ItemEvent) 
    { 
     // The NotificationEvent for an e-mail message is an ItemEvent. 
     ItemEvent itemEvent = (ItemEvent)notification; 

    } 
    else 
    { 
     // The NotificationEvent for a folder is an FolderEvent. 
     FolderEvent folderEvent = (FolderEvent)notification; 

    } 

Ordner Ereignisbenachrichtigungen im Grunde lassen Sie wissen, dass die Überprüfung Im Ordner hat sich etwas geändert und die zugrunde liegende Anzahl der ungelesenen Elemente ist geändert. Sie sollten dann je nach Art der Änderung ein separates ItemEvent erhalten.

Prost Glen

+0

Es ist nur, wie Sie sagen, danke. Wie auch immer, darf ich nur ItemEvent abonnieren und FolderEvent ignorieren? Wie? –

+1

Nein, Sie können das nicht tun, weil Sie eine Art von Änderung abonnieren, zB wenn Sie Änderungsereignisse abonniert haben, erhalten Sie eine Benachrichtigung sowohl für den Ordner als auch für das Element. Sie müssen das FolderEvent nur ignorieren, wenn Sie sie nicht benötigen. –

Verwandte Themen