2012-11-26 70 views
2

我試圖獲取作爲預約所需參與者的房間的ResponseType時出現問題。我可以確認我的Exchange 2010 sp2 ru4服務器即時批准或拒絕會議,但是當我通過ExchangeManaged api編程發現約會時,所需的與會者始終會爲ResponseType返回「未知」值。Attendee.ResponseType未知 - Exchange託管API

這裏是我的代碼...

public bool IsAppointmentVerifiedWithResource(Patron userSessionObj, Reservation reservation) 
    { 
     var emailConfig = new DataStoreManager.ConfigurationManager(); 
     var serviceBinding = emailConfig.GetConfiguration(Configuration.GetConfigurationName(Resource_ConfigurationConstants.ExchangeServiceBinding)); 

     // Create the binding. 
     var service = new ExchangeService(ExchangeVersion.Exchange2010_SP2) 
     { 
      UseDefaultCredentials = true, 
      Url = new Uri(serviceBinding) 
     }; 

     // Set the calendar view to use 
     var view = new CalendarView(reservation.Start, reservation.End); 

     // Get the target folder ID using the email address 
     var folder = new FolderId(WellKnownFolderName.Calendar, new Mailbox(reservation.EmailAddress)); 

     view.PropertySet = new PropertySet(BasePropertySet.FirstClassProperties); 

     if (CheckForApptCount(service, folder, view)) 
     { 
      var response = service.FindAppointments(folder, view); 

      service.LoadPropertiesForItems(from Item item in response select item, BasePropertySet.FirstClassProperties); 

      foreach (Appointment apt in response.Items) 
      { 
       foreach(Attendee at in apt.RequiredAttendees) 
       { 
        //room mailbox matches required attendee 
        if(at.Address == reservation.EmailAddress) 
        { 
         ******at.ResponseType always = Unknown****** 
         if(at.ResponseType == MeetingResponseType.Accept) 
         { 
          return true; 
         } 
        } 
       } 
      } 

     } 

     return false; 

    } 

如何獲得的responseType財產同步和加載任何想法?

謝謝, 克里斯

******************* UPDATE - 尋找主辦單位任命************** *****

public List<Appointment> RetrieveExistingReservations(DateTime selectedDate) 
      { 
       var service = new ExchangeService() 
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "[email protected]");     

using (WindowsIdentity.Impersonate(service.ImpersonatedUserId)) 
       { 
        return EwsWrapper.GetStandardCalendarItems(service, selectedDate, selectedDate.AddDays(30)); 
       } 
      } 

      public static List<Appointment> GetStandardCalendarItems(ExchangeService service, DateTime dtStart, DateTime dtEnd) 
      { 
       // Instantiate a collection to hold occurrences and exception calendar items. 
       List<Appointment> foundAppointments = new List<Appointment>(); 

       // Initialize values for the start and end times, and the number of appointments to retrieve. 
       DateTime startDate = dtStart.AddDays(-1); 
       DateTime endDate = startDate.AddDays(30); 

       //// Create a calendar view to search the calendar folder and specify the properties to return. 
       CalendarView calView = new CalendarView(startDate, endDate) 
       { 
        PropertySet = new PropertySet(BasePropertySet.FirstClassProperties) 
       }; 

       // Retrieve a collection of calendar items. 
       FindItemsResults<Appointment> findResults = service.FindAppointments(WellKnownFolderName.Calendar, calView); 

       // Add all calendar items in your view that are occurrences or exceptions to your collection. 
       foreach (Appointment appt in findResults.Items) 
       { 


        foundAppointments.Add(appt); 

       } 

       return foundAppointments; 
      } 

回答

0

發現的解決方案:參加者的的responseType總是空,因爲我是做了與會者的郵箱「findappointments」,然後試圖獲得該與會者的responseTyp的。獲取參加者的ResponseType的正確方法是爲組織者的郵箱運行「findappointments」。一旦找到約會,列舉出席者,並且ResponseType將可用。

+0

你是如何得到組織者郵箱的findappointments的? –

+0

請參閱上面的「更新」 – foxtrotZulu

相關問題