小编Mat*_*hew的帖子

.NET Graph SDK 更新 Sharepoint Online 列表项值

将列表项上传到列表后,我尝试向列表项上的自定义列添加值。我可以将项目放入列表中,我可以查询列表并取回项目的数据,但是当我尝试为额外字段添加数据时,出现以下Microsoft.SharePoint.Client.InvalidClientQueryException错误:

找到了一个没有类型名称的值,并且没有预期的类型可用。当指定模型时,有效载荷中的每个值都必须具有一个类型,该类型可以在有效载荷中指定、由调用者显式指定或从父值隐式推断。

我不确定错误消息所指的值或模型。这是我的代码:

var item = await graphClient
    .Drives[driveId]
    .Root.ItemWithPath(fileName)
    .ListItem.Request()
    .Select("WebURL,Fields,SharepointIds")
    .Expand("Fields")
    .GetAsync();

var fieldVals = await graphClient
    .Sites[SPUrl + ":"]
    .Sites[SpPath + ":"]
    .Lists[libId]
    .Items[item.SharepointIds.ListItemId]
    .Fields
    .Request()
    .GetAsync();

fieldVals.AdditionalData.Add("Phase",
    JsonConvert.SerializeObject(tags));

await graphClient
    .Drives[driveId]
    .Root
    .ItemWithPath(fileName)
    .ListItem
    .Fields
    .Request()
    .UpdateAsync(fieldVals);
Run Code Online (Sandbox Code Playgroud)

最初,当我在做时,fieldVals.AdditionalData.Add()我有“阶段”和一个列表(字符串),这导致未设置 OData 字段类型的错误,但我没有在文档中找到任何说明预期 OData 字段值是什么的地方。我尝试将其设置为microsoft.graph.fieldValueSet但没有用。

我正在尝试更新允许多个选项作为复选框的选择列。

c# sharepoint-online microsoft-graph-sdks microsoft-graph-api

3
推荐指数
1
解决办法
1055
查看次数

将文件上传到 Sharepoint 在线图书馆

我正在尝试使用 C# 图形 sdk 将文件上传到 Sharepoint Online 文档库,但未能成功。

我可以获取驱动器/库,但是如果我将它作为驱动器获取,则 Root 为空,并且出现异常。如果我将其作为列表处理,则似乎无法使用 CreateUploadSession 方法。

以列表形式获取文档库有效:

await graphClient.Sites[SPUrl + ":"].Sites[SpPath + ":"].Lists[libId].Request().GetAsync();
Run Code Online (Sandbox Code Playgroud)

通过驱动器 ID 获取文档库作为驱动器似乎不起作用:

var drive = await graphClient.Sites[SPUrl + ":"].Sites[SpPath + ":"].Drives[driveId].Request().GetAsync();
Run Code Online (Sandbox Code Playgroud)

将文档库作为其列表的驱动器执行以下操作:

var drive = await graphClient.Sites[SPUrl + ":"].Sites[SpPath + ":"].Lists[libId].Drive.Request().GetAsync();
Run Code Online (Sandbox Code Playgroud)

但是尝试获取该驱动器的根目录会导致“错误请求:指定的 URL 无效”。尝试 Drive.Items.Request() 也是如此。但据我所知,我需要有驱动器的根来做到这一点:

var uploadSession = await graphClient.Sites[SPUrl + ":"].Sites[SpPath + ":"].Lists[libId].Drive.Root.ItemWithPath(file.FileName).CreateUploadSession().Request().PostAsync();
Run Code Online (Sandbox Code Playgroud)

但是我有三个文档库,它们都将 Root 显示为空。显然我错过了一些东西,但我不清楚是什么。

c# asp.net azure sharepoint-online microsoft-graph-api

1
推荐指数
1
解决办法
1866
查看次数