2012-09-26 3 views
3

최근에 Exchange 연결이 끊어져 다시 복구 될 때 이벤트를 트리거하지 않게하는 Outlook 2007 이벤트와 함께 문제가 발생했습니다. attach a listener ~ Folder.Items.ItemAdd 이벤트가 발생하면 Exchange가 오프라인에서 온라인으로 전환 한 후에 이벤트 연결이 끊어집니다. 이것을 재현하기 위해 우리는 간단한 이더넷 연결을 시뮬레이션하기 위해 이더넷 케이블을 안팎으로 제거했습니다.Outlook Exchange에서 연결이 끊어 질 때 이벤트가 발생하지 않음

Exchange 연결이 중단 된 경우 (특히 원격 사무실에서 작동하는 경우) 일반적으로 이벤트가 트리거 될 수 있다고 보장 할 수 없으면 플러그인을 빌드하기가 어렵습니다. 우리는 캐시 된 교환 모드를 사용하지 않습니다.

해결 방법인지 여부 또는 이벤트 수신기를 다시 설정해야 할 때를 알 수있는 방법에 대한 피드백이있는 사람이 있습니까? 캐시 된 교환 모드을 사용하고 있습니까? 또는 certain events which you just can't use reliably이 있습니까?

여기 doesn't appear to be an event trigger for when Exchange connectivity is lost. 어쩌면 유일한 해결 방법은 안정적인 이벤트 발생 동작을 위해 일종의 타이머를 사용하는 것입니다.

public partial class ThisAddIn 
{ 
    Outlook.Items sentItems;  
    private void ThisAddIn_Startup(object sender, System.EventArgs e) 
    { 
    Outlook.Folder sentFolder = ThisAddIn.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail); 
    sentItems = sentFolder.Items; 
    sentItems.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(SentItems_ItemAdd); 
    } 
    void SentItems_ItemAdd(object Item) 
    { // breakpoint never hit after Exchange connectivity is lost 
    Outlook.MailItem mailItem = Item as Outlook.MailItem; 
    } 
} 

답변

4

이 문제를 해결 한 후에는 발견 된 는 Exchange와의 연결을 잃게 한 후 다시 설정되지 않는 특정 이벤트가있다. Application.Explorers.NewExplorerApplication.Inspectors.NewInspector과 같은 이벤트는 Exchange 연결의 영향을받지 않지만 Folder.Items.ItemAdd입니다. 아마도 Folder의 상속 인 MAPIFolder.Items이 원인 일 수 있습니다.

유일한 해결책

재 구축하는 이벤트가 정기적으로 이벤트 ( since we don't have an event to tell us when Exchange is unavailable) 또는 NewInspector 또는 MailItem.Send 같은 사용자 개시 작업 동안 이벤트를 다시 부착을 다시 연결하는 것입니다 트리거합니다.

MSDN Forums recommends you don't use the ItemAdd event은 UI를 통해서만 사용해야합니다.