EWS API выдает исключение из метода EmailMessage.Bind () - PullRequest
0 голосов
/ 04 сентября 2018

Мы использовали EWS API для доступа к сообщениям MS Teams, и он работал великолепно, пока мы не получили эту проблему для одного из клиентов.

System.ArgumentNullException: Array cannot be null. Parameter name: bytes
at System.Text.ASCIIEncoding.GetBytes(String chars, Int32 charIndex, Int32 
charCount, Byte[] bytes, Int32 byteIndex)
at System.Net.HttpWebRequest.GenerateRequestLine(Int32 headersSize)
at System.Net.HttpWebRequest.SerializeHeaders() 
at System.Net.HttpWebRequest.EndSubmitRequest()
at System.Net.HttpWebRequest.GetResponse() 
at     
Microsoft.Exchange.WebServices.Data.EwsHttpWebRequest.Microsoft.Exchange.
WebServices.Data.IEwsHttpWebRequest.GetResponse() 
at 
Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(
IEwsHttpWebRequest request) 
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(
IEwsHttpWebRequest& request) 
at         Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.InternalExecute() 
at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalBindToItems(
IEnumerable`1 itemIds, PropertySet propertySet, String anchorMailbox, ServiceErrorHandling errorHandling) 

at Microsoft.Exchange.WebServices.Data.ExchangeService.BindToItem(ItemId itemId, PropertySet propertySet) 
at Microsoft.Exchange.WebServices.Data.ExchangeService.BindToItem[TItem](ItemId itemId, PropertySet propertySet) 
at Microsoft.Exchange.WebServices.Data.EmailMessage.Bind(ExchangeService service, ItemId id, PropertySet propertySet) 

Фрагменты кода:

 ChangeCollection<ItemChange> changeCollection=null;
 List<Item> syncedItems = null;

 changeCollection = _exchangeService.SyncFolderItems(exchangeFolder.Id,
                new PropertySet(BasePropertySet.IdOnly, ItemSchema.ItemClass), null,
                _syncBatchSize,
                SyncFolderItemsScope.NormalItems,
                currentSyncState);

 syncedItems = changeCollection.Where(d => d.ChangeType == ChangeType.Create || d.ChangeType == ChangeType.Update)
                        .Select(c => c.Item).ToList();

foreach (var item in syncedItems)
{
  if (!item.ItemClass.Equals("IPM.SkypeTeams.Message"))
      continue;

  EmailMessage message = EmailMessage.Bind(_exchangeService, item.Id.UniqueId,
                    new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.Attachments,
         ItemSchema.TextBody));
   //...code to store message
 }

выпуск № 1 Для некоторого идентификатора сообщения метод EmailMessage.Bind () генерирует указанное выше исключение. Мы пытались повторить эту проблему на наших машинах Dev, но она не повторилась на наших командах Dev MS.

выпуск № 2 Для какого-то другого сообщения мы увидели, что этот метод просто возвращает null для сообщения.

Мы пытаемся выяснить фактическую причину этих двух проблем. Для этого мы попытались создать другой тип возможного сообщения в командах MS, но все еще не смогли их воспроизвести.

Класс элементов для этих сообщений команд MS - «IPM.SkypeTeams.Message».

Может ли кто-нибудь пролить свет на это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...