我正在尝试使用以下代码,但收到“消息:受众声明值对于当前资源无效。受众声明为'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方法上传大文件)
您最有可能因为使用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);
}