【问题标题】:How do I check in a file without changing the modified timestamp?如何在不更改修改后的时间戳的情况下签入文件?
【发布时间】:2019-01-27 02:45:18
【问题描述】:

我正在将 SharePoint CSOM 与 C# 桌面应用程序一起使用,并尝试将文件签入到启用了“要求签出”设置的文档库中。我希望修改后的时间戳保持不变(不更新)。

签入后,我使用原始时间戳更新列表项。这在“需要签出”被禁用时有效,但是当它被启用时,我得到一个异常,说必须先签出文件。我曾尝试在签入前更新列表项,但在签入时它会被覆盖。

有什么办法吗?

【问题讨论】:

标签: c# sharepoint checkin modified-date


【解决方案1】:
lstItem.Update()
lstItem.SystemUpdate()

您可以使用 update 来更新文件和修改日期。 系统更新将更新文件而不更改修改日期。

【讨论】:

  • 是签入导致修改后的时间戳被更新。签入文件后,我无法更改修改后的时间戳,因为它没有被签出。请记住,文档库中启用了“需要签出”设置。
【解决方案2】:

在您使用 SystemUpdate 更新数据后,您是否在重新签入 SPFile 时尝试过 OverwriteCheckin?

listItem.SystemUpdate();    
file.CheckIn("comment", CheckinType.OverwriteCheckIn);

编辑:在您澄清您不使用草稿后,我建议您使用SPFile.UndoCheckOut() 以编程方式放弃结帐。否则,通过修改内容而不将内容标记为已修改,您本质上违背了 SharePoint 的设计。

【讨论】:

  • 我没有,但我从post 的理解是,这应该只在您签入草稿时使用。
  • 如果您不使用草稿,那么您要么 a) 尝试放弃结帐,要么 b) 尝试更新文件的内容。如果是,则使用SPFile.UndoCheckOut()。如果是 b,那么您天生就违背了 SharePoint 的设计,因为正在更新的内容构成了修改。
  • 我正在更新文件内容。如果启用了“需要签出”设置,是否有办法在文件签入后更新修改和修改的字段?有什么办法可以不用签出文件吗?
  • 尝试将Modified字段上的ReadOnly属性设置为false,然后在SystemUpdate之前更改它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-26
  • 2018-07-24
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多