Мы использовали 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».
Может ли кто-нибудь пролить свет на это?