gpt4 book ai didi

c# - 通过 CSOM 记录版本历史

转载 作者:行者123 更新时间:2023-11-30 20:55:21 27 4
gpt4 key购买 nike

我目前正在尝试通过 CSOM 提取 SharePoint 2010 网站集的文档历史记录。

我用来完成这个的代码在这里:

using (var clientContext = new ClientContext("http://localhost/sites/mysite"))
{
File file = clientContext.Web.GetFileByServerRelativeUrl(url);
clientContext.Load(file, f => f.ListItemAllFields);
clientContext.ExecuteQuery();
}

每当我运行这段代码时,它都会抛出一个异常说明:

服务器异常未被用户代码处理

值不在预期范围内

请注意:

  • 版本历史已打​​开
  • 将 f.ListItemAllFields 更改为 f.Versions 也无法解决问题。

最佳答案

这是我获取文档历史记录并保存在数据集中的代码

    public DataSet GetDoucmentHistory(string siteUrl, string listName, int id)
{
using (ClientContext ctx = new ClientContext(siteUrl)) {
ctx.Credentials = new NetworkCredential(_username, _password, _domain);
var file = ctx.Web.Lists.GetByTitle(listName).GetItemById(id).File;
var versions = file.Versions;
ctx.Load(file);

ctx.Load(versions);
ctx.Load(versions, vs=>vs.Include(v=>v.CreatedBy));

ctx.ExecuteQuery();

var ds = CreatHistoryDataSet();
foreach (FileVersion fileVersion in versions)
{
var row = ds.Tables[0].NewRow();
row["CreatedBy"] = fileVersion.CreatedBy.Title;
row["Comments"] = fileVersion.CheckInComment;
row["Created"] = fileVersion.Created.ToShortDateString() + " " +
fileVersion.Created.ToShortTimeString();
row["Title"] = file.Title;
row["VersionLabel"] = fileVersion.VersionLabel;
row["IsCurrentVersion"] = fileVersion.IsCurrentVersion;
ds.Tables[0].Rows.Add(row);
}

return ds;
}

}

private static DataSet CreatHistoryDataSet()
{
DataSet ds = new DataSet();
DataTable table = new DataTable();
table.Columns.Add("Title");
table.Columns.Add("Created");
table.Columns.Add("CreatedBy");
table.Columns.Add("EncodedAbsUrl");
table.Columns.Add("VersionLabel");
table.Columns.Add("Comments");
table.Columns.Add("IsCurrentVersion");
ds.Tables.Add(table);
return ds;
}

关于c# - 通过 CSOM 记录版本历史,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18367014/

27 4 0
文章推荐: javascript - 从 javascript 对象的属性中获取键名
文章推荐: c - 如何将文本复制到C中的字符数组
文章推荐: JavaScript 对象属性不会被减去
文章推荐: c# - 使用 C# LINQ 将过滤后的 List 连接到 List