Ошибка загрузки для DrievItems в списке накопителей SitePages - PullRequest
0 голосов
/ 11 декабря 2019

Ошибка загрузки для всех DrivesItems на диске, связанных со списком SitePage на сайте sharepoint.

Запрос API Graph:

UploadSession uploadSession = GraphCLient.Sites[{SiteId}].Drives[{DriveId of SitePages List }]. Items[{DriveFolderID}].ItemWithPath(driveItem.Item.Name).CreateUploadSession().Request().PostAsync().Result;

UploadSession будет успешно создан, но chunkuploadprovider выдает ошибку.

Ответ об ошибке: Код: accessDenied Сообщение: вызывающая сторона не имеет разрешения на выполнение действия. Внутренняя ошибка

Фрагмент кода:

private void UploadItem(OneDriveJsonStructure driveItem)
        {
            try
            {
                MemoryStream memStream = (MemoryStream)driveItem.Content;
                byte[] buffer = memStream.ToArray();
                DriveItem item = null;
                using (System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer))
                {

                    UploadSession uploadSession = this._SharepointOperations._GraphCLient.Sites[this._SiteId].Drives[this._DriveId].Items[this._DriveFolderId].ItemWithPath(driveItem.Item.Name).CreateUploadSession().Request().PostAsync().Result;
                    var provider = new ChunkedUploadProvider(uploadSession, this._SharepointOperations._GraphCLient, memStream);
                    var chunkRequests = provider.GetUploadChunkRequests();
                    var readBuffer = new byte[buffer.Length];
                    var trackedExceptions = new List<Exception>();
                    DriveItem itemResult = null;

                    foreach (var request in chunkRequests)
                    {
                        // Send chunk request
                        var result = provider.GetChunkRequestResponseAsync(request, readBuffer, trackedExceptions).Result;
                        if (result.UploadSucceeded)
                        {
                            itemResult = result.ItemResponse;
                            item = result.ItemResponse;
                        }
                    }
                    if (itemResult == null)
                    {
                        UploadChunkResult result = null;
                        // Retry the upload ...
                        foreach (var request in chunkRequests)
                        {
                            // Send chunk request
                            result = provider.GetChunkRequestResponseAsync(request, readBuffer, trackedExceptions).Result;
                        }
                        item = result.ItemResponse;
                    }
                }
                item.Permissions = driveItem.Item.Permissions;
                GivePermission(item);

Предоставление разрешения клиентскому приложению из Azure AD:

Разрешение графика: Graph Permission

Разрешения Sharepoint: Sharepoint Psermissions

Даже после всех этих разрешений выдается это сообщение об ошибке:

"Вызывающий не имеетразрешение на выполнение действия ".

Какие разрешения необходимы для выполнения этого действия?

Загрузка для driveItems другого диска успешно выполнена.

...