我正在使用新的Office365 API(http://visualstudiogallery.msdn.microsoft.com/7e947621-ef93-4de7-93d3-d796c43ba34f) 让C#客户端连接到Office365在线,特别是Exchange服务。 客户端可以通过授权的Office365用户读取和发送邮件。 客户端应用程序无法在根联机交换目录或任何子文件夹中创建新的(子)文件夹,尽管所有者已相应地设置了父文件夹权限(在https://outlook.office365.com中手动输入) /owa/?realm=SomeCompany.onmicrosoft.com)。
我的源代码:
Microsoft.Office365.Exchange.ExchangeClient XClient;
//authorization, XClient can read/send mails....
IFolder newFolder = new Microsoft.Office365.Exchange.Folder();
newFolder.DisplayName = "someFolderName";
newFolder.ParentFolderId = "Some valid parent folder Id";
newFolder.ClassName = "IPF.Note";
newFolder.Id = "AAMkAGVlNT....";
await XClient.Me.Folders.AddFolderAsync(newFolder);
//throws exception "ID must be non-empty"
从可用信息如何使用EWS"创建文件夹。 (参见例如http://msdn.microsoft.com/en-us/library/office/dn535504(v=exchg.150).aspx#bk_createfolderews) 我希望只需要设置父ID和显示名称。 我甚至提供了一个非空ID,但鉴于有关EWS的可用信息,它似乎不合理。我在这里做错了什么?
答案 0 :(得分:1)
经过一些试验和错误,我自己找到了答案。而不是
await XClient.Me.Folders.AddFolderAsync(newFolder);
需要遍历文件夹树以获取父文件夹的(可能为空)ChildFolders集合。例如,通过
await XClient.Me.Folders.GetById(parentId).ChildFolders.AddFolderAsync(newFolder);
此外,设置newFolder的parentFolderID字段无关紧要。
此致 马丁
PS:原始尝试符合通过以下方式创建新的One Drive子文件夹的步骤:
Microsoft.Office365.SharePoint.SharePointClient SpClient;
...
await SpClient.Files.AddFolderAsync(folder);