EWS - Calendar list crashes while trying to load attendees

I am trying to list some events using the C # EWS 2.0 library.

It uses the following code:

    public IEnumerable<AppEvent> ListEvents(CalendarFolder folder, DateTime? startDate, DateTime? endDate)
    {
        var items = new List<AppEvent>();

        var now = DateTime.Now;
        if (startDate == null) startDate = DateTime.Now;
        if (endDate == null) endDate = now.AddDays(14);

        FindItemsResults<Appointment> findResults = null;
        ServiceResponseCollection<GetItemResponse> appointments = null;
        CalendarView view = null;

        view = new CalendarView((DateTime)startDate, (DateTime)endDate);
        findResults = folder.FindAppointments(view);

        if (findResults.Items.Count() == 0) return items;
        appointments = Service.BindToItems(findResults.Select(item => item.Id), AppointmentPropertySet);

        foreach (GetItemResponse item in appointments)
        {
            var appointment = item.Item as Appointment;
            try
            {
                if (appointment.IsCancelled) continue;
            }
            catch (System.NullReferenceException)
            {
                continue;
            }
            var evt = AppEvent.FromEWSAppointment(appointment);
            items.Add(evt);
        }

        return items;
    }

And AppointmentPropertySetit looks like this:

    protected PropertySet AppointmentPropertySet = new PropertySet(
        AppointmentSchema.Subject, 
        AppointmentSchema.Start,
        AppointmentSchema.End, 
        AppointmentSchema.IsAllDayEvent, 
        AppointmentSchema.IsMeeting,
        AppointmentSchema.IsRecurring, 
        AppointmentSchema.IsCancelled,
        AppointmentSchema.IsDraft, 
        AppointmentSchema.Location,
        AppointmentSchema.Resources,
        AppointmentSchema.RequiredAttendees, 
        AppointmentSchema.OptionalAttendees,
        AppointmentSchema.LegacyFreeBusyStatus,
        AppointmentSchema.Organizer, 
        AppointmentSchema.Body,
        AppointmentSchema.Sensitivity,
        AppointmentSchema.AppointmentReplyTime,
        AppointmentSchema.AppointmentSequenceNumber,
        AppointmentSchema.AppointmentState,
        AppointmentSchema.AppointmentType,
        AppointmentSchema.ConferenceType,
        AppointmentSchema.DateTimeCreated,
        AppointmentSchema.Duration,
        AppointmentSchema.EndTimeZone,
        AppointmentSchema.HasAttachments,
        AppointmentSchema.ICalDateTimeStamp,
        AppointmentSchema.ICalRecurrenceId,
        AppointmentSchema.ICalUid,
        AppointmentSchema.Id,
        AppointmentSchema.Importance,
        AppointmentSchema.IsOnlineMeeting,
        AppointmentSchema.IsReminderSet,
        AppointmentSchema.IsResponseRequested,
        AppointmentSchema.IsUnmodified,
        AppointmentSchema.LastModifiedTime,
        AppointmentSchema.LegacyFreeBusyStatus,
        AppointmentSchema.MeetingRequestWasSent,
        AppointmentSchema.MyResponseType,
        AppointmentSchema.MeetingWorkspaceUrl,
        AppointmentSchema.NetShowUrl,
        AppointmentSchema.OriginalStart,
        AppointmentSchema.ParentFolderId,
        AppointmentSchema.Recurrence,
        AppointmentSchema.ReminderDueBy,
        AppointmentSchema.ReminderMinutesBeforeStart,
        AppointmentSchema.StartTimeZone,
        AppointmentSchema.WebClientEditFormQueryString,
        AppointmentSchema.WebClientReadFormQueryString
        );

We get the following error for one of the events. If I delete to RequiredAttendeesand OptionalAttendeesfrom AppointmentPropertySet, it works fine (although it doesn't return).

How can I avoid this error or how can I skip this event so that the view returns at least those meetings that were not broken?

System.ArgumentException: Requested value 'User' was not found.
   at System.Enum.EnumResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument)
   at System.Enum.TryParseEnum(Type enumType, String value, Boolean ignoreCase, EnumResult& parseResult)
   at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)
   at Microsoft.Exchange.WebServices.Data.EwsUtilities.Parse[T](String value)
   at Microsoft.Exchange.WebServices.Data.EwsXmlReader.ReadElementValue[T]()
   at Microsoft.Exchange.WebServices.Data.EmailAddress.TryReadElementFromXml(EwsServiceXmlReader reader)
   at Microsoft.Exchange.WebServices.Data.Attendee.TryReadElementFromXml(EwsServiceXmlReader reader)
   at Microsoft.Exchange.WebServices.Data.ComplexProperty.InternalLoadFromXml(EwsServiceXmlReader reader, XmlNamespace xmlNamespace, String xmlElementName, Func`2 readAction)
   at Microsoft.Exchange.WebServices.Data.ComplexProperty.LoadFromXml(EwsServiceXmlReader reader, XmlNamespace xmlNamespace, String xmlElementName)
   at Microsoft.Exchange.WebServices.Data.Attendee.TryReadElementFromXml(EwsServiceXmlReader reader)
   at Microsoft.Exchange.WebServices.Data.ComplexProperty.InternalLoadFromXml(EwsServiceXmlReader reader, XmlNamespace xmlNamespace, String xmlElementName, Func`2 readAction)
   at Microsoft.Exchange.WebServices.Data.ComplexProperty.LoadFromXml(EwsServiceXmlReader reader, XmlNamespace xmlNamespace, String xmlElementName)
   at Microsoft.Exchange.WebServices.Data.ComplexPropertyCollection`1.LoadFromXml(EwsServiceXmlReader reader, XmlNamespace xmlNamespace, String localElementName)
   at Microsoft.Exchange.WebServices.Data.ComplexPropertyDefinitionBase.InternalLoadFromXml(EwsServiceXmlReader reader, PropertyBag propertyBag)
   at Microsoft.Exchange.WebServices.Data.ComplexPropertyDefinitionBase.LoadPropertyValueFromXml(EwsServiceXmlReader reader, PropertyBag propertyBag)
   at Microsoft.Exchange.WebServices.Data.PropertyBag.LoadFromXml(EwsServiceXmlReader reader, Boolean clear, PropertySet requestedPropertySet, Boolean onlySummaryPropertiesRequested)
   at Microsoft.Exchange.WebServices.Data.EwsServiceXmlReader.ReadServiceObjectsCollectionFromXml[TServiceObject](XmlNamespace collectionXmlNamespace, String collectionXmlElementName, GetObjectInstanceDelegate`1 getObjectInstanceDelegate, Boolean clearPropertyBag, PropertySet requestedPropertySet, Boolean summaryPropertiesOnly)
   at Microsoft.Exchange.WebServices.Data.GetItemResponse.ReadElementsFromXml(EwsServiceXmlReader reader)
   at Microsoft.Exchange.WebServices.Data.ServiceResponse.LoadFromXml(EwsServiceXmlReader reader, String xmlElementName)
   at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.ParseResponse(EwsServiceXmlReader reader)
   at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ReadResponse(EwsServiceXmlReader ewsXmlReader)
   at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.ReadResponseXml(Stream responseStream)
   at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.ReadResponse(IEwsHttpWebResponse response)
   at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalBindToItems(IEnumerable`1 itemIds, PropertySet propertySet, ServiceErrorHandling errorHandling)
   at ExchangeAppService.Utilities.API.ExchangeAPI.ListEvents(CalendarFolder folder, Nullable`1 startDate, Nullable`1 endDate) in c:\Users\Some Guy\Documents\Visual Studio 2013\Projects\ExchangeAppService\ExchangeAppService\Utilities\API\Exchange\ExchangeAPI.cs:line 195
+4
source share
2 answers

, , ( "" ) MailboxType ( ) Attendees.

MailboxType, , "" .

, , Exchange , (. EWS Managed API) , Fiddler Wireshark.

, , - github repo , .

+2
0

Source: https://habr.com/ru/post/1685964/


All Articles