Я пытаюсь выполнить шаг 1 в C#, в соответствии с Вложение больших файлов в сообщения Outlook в виде вложений из документации Microsoft Graph.
GraphServiceClient
и сообщение id
Я использую отлично работает при загрузке небольших вложений. Однако при загрузке больших вложений я получил эту ошибку:
Запрос OData не поддерживается.
Основываясь на приведенном ниже коде, я считаю, что правильно следовал документации.
Кто-нибудь знает, почему я получаю сообщение об ошибке, которое я получаю?
var attachmentItem = new AttachmentItem
{
AttachmentType = AttachmentType.File,
Name = file.Name,
Size = file.Length //3.5MB test file
};
UploadSession session = await GraphAPIConnection.GraphClient
.Me
.Messages[message.Id]
.Attachments
.CreateUploadSession(attachmentItem)
.Request()
.PostAsync();
Я проверил, что свойства file
, message
и attachmentItem
были созданы правильно перед попыткой вызова.
Использование пакетов:
- Microsoft.Graph.Core.1.20.0
- Microsoft.Graph.Beta.0.12.0-preview
ОБНОВЛЕНИЕ 1:
Я обнаружил, что моей конечной точкой при создании GraphServiceClient была версия 1.0, а не бета. После его изменения в моем коде произошла следующая ошибка:
InvalidAudience
using (Stream fileStream = System.IO.File.OpenRead(file.FullName))
{
if (session != null)
{
int maxSizeChunk = (320 * 1024) * 4;
List<Exception> exceptions = new List<Exception>();
byte[] readBuffer = new byte[maxSizeChunk];
ChunkedUploadProvider uploadProvider =
new ChunkedUploadProvider
(session, GraphAPIConnection.GraphClient, fileStream, maxSizeChunk);
IEnumerable<UploadChunkRequest> chunkRequests =
uploadProvider
.GetUploadChunkRequests();
foreach (UploadChunkRequest request in chunkRequests)
{
UploadChunkResult result =
await uploadProvider
.GetChunkRequestResponseAsync
(request, readBuffer, exceptions);
//ERROR HERE
}
}
}
У меня сложилось впечатление, что Graph не нужно использовать альтернативу Outlook API. Тем не менее, похоже, что сеанс загрузки использует его независимо от:
request.RequestUrl: https://outlook.office.com: 443 / api / beta / ...
request .Client.BaseUrl: https://graph.microsoft.com/beta
Означает ли это, что мне нужны дополнительные области для правильного доступа к этому API?
Нужно ли создавать новый клиент просто для этого?