GetFileByServerRelativeURL时出现C#SharePoint异常'Microsoft.SharePoint.Client.PropertyOrFieldNotInitializedException'

时间:2019-05-13 15:49:15

标签: c# sharepoint listitem

此代码的第二部分显示PropertyException。第一部分按预期上传文件。在context.ExecuteQuery();之后,我得到了:

  

'uploadedFile.CheckInComment'引发了类型异常   'Microsoft.SharePoint.Client.PropertyOrFieldNotInitializedException'

我不确定为什么上下文应该可以,因为它确实上传了文件。

我将尝试更新刚刚上传的文档中的一些元数据字段。

    Folder currentRunFolder = site.GetFolderByServerRelativeUrl(barRootFolderRelativeUrl + "/");
FileCreationInformation newFile = new FileCreationInformation
{
    Content = System.IO.File.ReadAllBytes(@p),
    Url = Path.GetFileName(@p),
    Overwrite = true
};

currentRunFolder.Files.Add(newFile);
currentRunFolder.Update();
context.ExecuteQuery();
newUrl = siteUrl + barRootFolderRelativeUrl + "/" + Path.GetFileName(@p);

// Set document properties
Microsoft.SharePoint.Client.File uploadedFile = context.Web.GetFileByServerRelativeUrl(newUrl);
ListItem listItem = uploadedFile.ListItemAllFields;
listItem["TestEQCode"] = "387074";
listItem.Update();
context.ExecuteQuery();

2 个答案:

答案 0 :(得分:0)

您能尝试一下吗?

currentRunFolder.Files.Add(newFile);
//currentRunFolder.Update();
context.Load(newFile);
context.ExecuteQuery();
//newUrl = siteUrl + barRootFolderRelativeUrl + "/" + Path.GetFileName(@p);

// Set document properties
//Microsoft.SharePoint.Client.File uploadedFile = context.Web.GetFileByServerRelativeUrl(newUrl);
ListItem listItem = newFile.ListItemAllFields;
listItem["TestEQCode"] = "387074";
listItem.Update();
context.ExecuteQuery();

答案 1 :(得分:0)

好吧,即使ListItems为NULL,我也可以设置TestEQCode并进行更新,并且该字段在SharePoint端得到更新。整个过程中,我一直在关注ListItems是否获取实际的元数据列表,但实际上并不需要它。我只需要对这些项目进行硬编码,它将进行更新。 –