Обязательный атрибут BodyType отсутствует при вызове Appointment.Bind (служба, новый ItemId (AppointmentID)) - PullRequest
0 голосов
/ 07 июня 2019

При звонке

Appointment appt = Appointment.Bind (сервис, новый ItemId (AppointmentID));

Я получил Запрос не прошел проверку схемы:

 The required attribute 'BodyType' is missing.

   at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ProcessWebException(WebException webException) in \\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\Requests\ServiceRequestBase.cs:line 990
   at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request) in \\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\Requests\ServiceRequestBase.cs:line 831
   at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request) in \\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\Requests\ServiceRequestBase.cs:line 724
   at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute() in \\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\Requests\MultiResponseServiceRequest.cs:line 157
   at Microsoft.Exchange.WebServices.Data.ExchangeService.BindToItem(ItemId itemId, PropertySet propertySet) in \\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\ExchangeService.cs:line 1281
   at Microsoft.Exchange.WebServices.Data.ExchangeService.BindToItem[TItem](ItemId itemId, PropertySet propertySet) in \\REDMOND\EXCHANGE\BUILD\E15\15.00.0913.015\SOURCES\sources\dev\EwsManagedApi\src\EwsManagedApi\Core\ExchangeService.cs:line 1299

Я храню AppointmentID в другой базе данных для отслеживания. И я ожидал бы другого типа ошибки, если встреча не найдена.

Я ожидаю, что приложение загрузится без ошибок

Дополнительный код:

private void CancelAppointment(string AppointmentID)
{
    try
    {
        ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1, TimeZoneInfo.Utc);
        ExchangeConnectionInfo ConnectInfo = null;
        ConnectInfo = new ExchangeConnectionInfo(_mUserId);
        ConnectToService();

        var userEmail = ConnectInfo.GetUserEmail();
        service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, userEmail);

        Appointment appt = Appointment.Bind(service, new ItemId(AppointmentID));

        appt.Delete(DeleteMode.HardDelete, SendCancellationsMode.SendOnlyToAll);
    }
    catch (Exception e)
    {
        ErrorLog.Log("ExchangeIntegrationWS", "CancelAppointmentError", e.Message + "\n\n" + e.StackTrace);
    }
}

1 Ответ

0 голосов
/ 10 июня 2019

Я не совсем уверен, почему вы получаете ошибку.Я предполагаю, что, возможно, есть ошибка со старой версией Exchange, которую вы используете.

В любом случае, я думаю, что если вы измените код Appointment.Bind для включения параметра propertySet и дадите EWS команду вернуть тело, это должно исправить ошибку.

Appointment appt = Appointment.Bind(service, new ItemId(AppointmentID), new PropertySet(BasePropertySet.FirstClassProperties) { RequestedBodyType = BodyType.Text});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...