.AddAsync(driveItem)
в следующем коде никогда не возвращается. Может ли кто-нибудь пролить свет на это?
IPublicClientApplication publicClientApplication = PublicClientApplicationBuilder
.Create(App.ClientId)
.Build();
DeviceCodeProvider authProvider = new DeviceCodeProvider(
publicClientApplication,
new string[] { "Files.ReadWrite.All" });
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
DriveItem driveItem = new DriveItem
{
Name = "Foo",
Folder = new Folder { },
AdditionalData = new Dictionary<string, object>()
{ { "@microsoft.graph.conflictBehavior", "fail" }
}
};
await graphClient
.Me
.Drive
.Root
.Children
.Request()
.AddAsync(driveItem);
[Edit 1]
Я пробовал имена папок, отличные от "Foo", пробовал имена существующих или не Существующие папки безрезультатны.
Я также пытался «переименовать» вместо «сбой» для «@ microsoft.graph.conflictBehavior», но безрезультатно.
Я также пытался без AdditionalData безрезультатно.
[Edit 2] Я решил подождать, пока метод вернется на некоторое время (более 10 минут), и он, наконец, выдал исключение:
Код: generalException Сообщение: ошибка произошла отправка запроса.
Источник "Microsoft.Graph.Core"
at Microsoft.Graph.HttpProvider.<SendRequestAsync>d__19.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Graph.HttpProvider.<SendAsync>d__18.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Graph.BaseRequest.<SendRequestAsync>d__35.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Graph.BaseRequest.<SendAsync>d__31`1.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
Внутреннее исключение:
Код: generalException Сообщение: неожиданное исключение произошло при аутентификации запроса.
at Microsoft.Graph.Auth.DeviceCodeProvider.<GetNewAccessTokenAsync>d__14.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Graph.Auth.DeviceCodeProvider.<AuthenticateRequestAsync>d__13.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Graph.AuthenticationHandler.<SendAsync>d__16.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Net.Http.HttpClient.<FinishSendAsyncBuffered>d__62.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Graph.HttpProvider.<SendRequestAsync>d__19.MoveNext()
[Edit 3]
Следующий код имеет точно такую же проблему:
IDriveItemChildrenCollectionPage children = await graphClient.Me.Drive.Root.Children
.Request()
.GetAsync();
Это похоже на общую проблему для Graph SDK.
[Редактировать 4]
Я проиграл регистрацию приложения в Azure Active Directory и получил следующее самое внутреннее исключение:
AADSTS70000: The provided value for the input parameter 'device_code' is not valid.
Trace ID: 7067d5e9-d811-49ed-9b8b-7a0b9a0c4c00
Correlation ID: a4faa514-debc-47dc-8ef3-0b9853949e28
Timestamp: 2020-01-11 06:47:36Z
Опять же, я должен ждать более 10 минут для экс Бросить вызов.
[Редактировать 5] Не уверен, почему точно такие же вызовы с использованием Microsoft.Toolkit.Graph.Controls работают отлично.
await provider.Graph.Me.Drive.Root.Children
.Request()
.AddAsync(driveItem);