«Значение заявки на аудиторию недопустимо для текущего ресурса» при использовании ChunkedUploadProvider для вложения в Microsoft Graph Client API - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь использовать следующий код, но получаю сообщение «Сообщение: значение заявки на аудиторию недействительно для текущего ресурса. Заявка на аудиторию:« https://graph.microsoft.com », URL запроса -« » https://outlook.office.com/api/beta/Users ... "

Я получаю его на provider.GetUploadChunkRequests (); позвоните ниже:

AttachmentItem attachmentItem= new AttachmentItem
            { 
                Name = [Name],
                AttachmentType = AttachmentType.File,
Size = [Size]
            };

var session = graphClient.Users[USEREMAIL].Messages[MESSAGEID].Attachments.CreateUploadSession(attachmentItem).Request().PostAsync().Result;
            var stream = new MemoryStream(BYTEARRAY);
            var maxSizeChunk = DEFAULT_CHUNK_SIZE;
            var provider = new ChunkedUploadProvider(session, graphClient, stream, maxSizeChunk);
            var chunkRequests = provider.GetUploadChunkRequests();

(я использую graphClient для успешной отправки электронной почты, а также использую его для загрузки больших файлов с помощью метода uploadSession)

1 Ответ

0 голосов
/ 31 января 2020

С Andrue Eastman на GitHub :

Скорее всего, вы получаете ошибку из-за использования ChunkedUploadPorvider вместо использования FileUploadTask для загрузки вложения, которое является установка заголовка Auth, чтобы вызвать полученную ошибку.

Чтобы использовать задачу загрузки файла, выполните следующие шаги

Сначала создайте сеанс загрузки и передайте его задаче, как показано.

// Create task
var maxSliceSize = 320 * 1024; // 320 KB - Change this to your chunk size. 4MB is the default.
LargeFileUploadTask<FileAttachment> largeFileUploadTask = new LargeFileUploadTask<FileAttachment>(uploadSession, stream, maxSliceSize);

Создание монитора загрузки (необязательно)

// Setup the progress monitoring
IProgress<long> progress = new Progress<long>(progress =>
{
    Console.WriteLine($"Uploaded {progress} bytes of {stream.Length} bytes");
});

Служба возвращает только URI местоположения, который может быть считан из объекта результата, следующим образом.

UploadResult<FileAttachment> uploadResult = null;
try
{
    uploadResult = await largeFileUploadTask.UploadAsync(progress);
    if (uploadResult.UploadSucceeded)
    {
        Console.WriteLine(uploadResult.Location);//the location of the object
    }
}
catch (ServiceException e)
{
    Console.WriteLine(e.Message);
}
...