“在Microsoft Graph Client API中将ChunkedUploadProvider用于附件时,受众声明值对于当前资源无效”

问题描述 投票:0回答:1

我正在尝试使用以下代码,但收到“消息:受众声明值对于当前资源无效。受众声明为'https://graph.microsoft.com',请求网址为'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方法上传大文件)

microsoft-graph outlook-restapi microsoft-graph-sdks microsoft-graph-files
1个回答
0
投票

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.