以下代码中的.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);
[编辑1]
我尝试使用“ Foo”以外的其他文件夹名称,尝试使用现有或不存在的文件夹的名称均无济于事。
我也尝试对“ @ microsoft.graph.conflictBehavior”使用“重命名”而不是“失败”。
我也尝试了没有AdditionalData的尝试。[编辑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()
[编辑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分钟以上才能引发异常。
我不确定为什么不返回,但是Camera Roll
是special folders之一(因此是保留的文件夹名称)。在配置Drive
或第一次连接特定服务时(即由OneDrive应用创建“相机胶卷”)时,会自动生成其中的少数几个:
为了检索“相机胶卷”文件夹,请通过其“ id”进行请求:
GET /me/drive/special/cameraroll