2013-09-27 2 views
1

끌어 오기 구독을 사용하여 이벤트 또는 알림을 만들 때 "지정한 개체를 찾을 수 없습니다"라는 예외가 발생하는 이유는 무엇입니까? "지정한 개체를 상점에서 찾을 수 없음"예외

<Trace Tag="EwsResponse" Tid="1" Time="2013-09-27 12:38:43Z" Version="15.00.0516.014"> 
<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<soap:Header> 
    <t:ServerVersionInfo MajorVersion="8" MinorVersion="3" MajorBuildNumber="83" MinorBuildNumber="4" Version="Exchange2007_SP1" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" /> 
</soap:Header> 
<soap:Body> 
    <m:GetItemResponse xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"> 
    <m:ResponseMessages> 
     <m:GetItemResponseMessage ResponseClass="Error"> 
     <m:MessageText>The specified object was not found in the store.</m:MessageText> 
     <m:ResponseCode>ErrorItemNotFound</m:ResponseCode> 
     <m:DescriptiveLinkKey>0</m:DescriptiveLinkKey> 
     <m:Items /> 
     </m:GetItemResponseMessage> 
    </m:ResponseMessages> 
    </m:GetItemResponse> 
</soap:Body> 
내 코드입니다 : 같은

EWS를의 SOAP 응답 보이는

PullSubscription subscription = service.SubscribeToPullNotifications(
        new FolderId[] { WellKnownFolderName.Inbox }, 1, WaterMark, 
        EventType.NewMail, EventType.Created, EventType.Moved, EventType.Deleted); 
WaterMark = subscription.Watermark; 

// Initiate the GetEvents method for the new subscription. 
GetEventsResults events = subscription.GetEvents(); 

// Handle the results of the GetEvents method. 
foreach (ItemEvent itemEvent in events.ItemEvents) 
{ 
    switch (itemEvent.EventType) 
    { 
     case EventType.NewMail: 
     Console.WriteLine("New Mail"); 
     EmailMessage message = EmailMessage.Bind(service, itemEvent.ItemId); 
     if (message.Subject.Equals("")) 
      { 
      break; 
      } 
     Item item = Item.Bind(service, itemEvent.ItemId); 
     RulesApplied(service, message, item); 
     break; 
     case EventType.Created: 
      Console.WriteLine("Created"); 
      EmailMessage message1 = EmailMessage.Bind(service, itemEvent.ItemId); 
      // Here I get the Exception. 
      break; 

답변

1

I했습니다 메시지가 이동하면이 예외가 발생 발견되거나 하위 워터 마크가 설정된 후 사서함 소유자가 삭제합니다.

ItemEvents 컬렉션에 가입 된 이벤트 (예 : 새 메시지)의 영향을받는 항목이 포함되어 있지만 컬렉션의 모든 항목이 여전히 관련되지 않을 수 있습니다. ItemId는 삭제와 같은 최신 이벤트의 영향을 받기 때문에 더 이상 유효하지 않습니다.

일반 사용자가 메시지를 건 드리기 전에 더 자주 폴링을 할 수 있지만 조직 내 응용 프로그램에서는 사서함 사용자가 이동 또는 삭제할 특별한 이유가 있으므로 예외를 기록합니다 구독 한 앱이 메시지 이벤트에서 작동하기 전의 메시지.

+0

이 예외는받은 편지함에서 해당 항목을 이동하는 동안 발생합니다. 우리가 그 우편물을 처리하는 동안. –