2

予約に必要な出席者である部屋のResponseTypeを取得しようとすると、問題が発生します。Exchange 2010 sp2 ru4サーバーが会議を即座に承認または拒否することを確認できますが、ExchangeManaged apiを使用してプログラムで予定を見つけると、問題の必要な出席者は常にResponseTypeの「不明」値を返します。

これが私のコードです...

 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プロパティを同期してロードする方法に関するアイデアはありますか?

ありがとう、クリス

*******************更新-主催者の予定を見つける*******************

    public List<Appointment> RetrieveExistingReservations(DateTime selectedDate)
            {
               var service = new ExchangeService()
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "yourorganizer@whatever.com");                

 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;
            }
4

1 に答える 1

0

解決策が見つかりました:出席者のメールボックスに対して「findappointments」を実行してから、この出席者のResponseTypeを取得しようとしたため、出席者のResponseTypeは常にnullでした。参加者のResponseTypeを取得する正しい方法は、主催者のメールボックスに対して「findappointments」を実行することです。アポイントメントを見つけたら、出席者を列挙すると、ResponseTypeが利用可能になります。

于 2012-12-02T14:21:26.427 に答える