CMIS Sharepoint 2013 - 无法更新文档

时间:2015-04-08 10:05:14

标签: c# sharepoint sharepoint-2013 opencmis dotcmis

我无法使用CMIS for Sharepoint 2013更新文档。我一直收到错误"操作正在尝试更新不再是最新的对象。"我被困在为什么会这样。

请您检查我的代码有什么问题:

        Dictionary<string, string> parameters = new Dictionary<string, string>();
        parameters[DotCMIS.SessionParameter.BindingType] = BindingType.AtomPub;
        parameters[DotCMIS.SessionParameter.AtomPubUrl] = url;
        parameters[DotCMIS.SessionParameter.User] = username;
        parameters[DotCMIS.SessionParameter.Password] = password;
        parameters[SessionParameter.RepositoryId] = repositoryID;

        SessionFactory factory = SessionFactory.NewInstance();
        ISession session = factory.CreateSession(parameters);
        ICmisObject cmisobj = session.GetObject("12345");

        IDictionary<String, Object> properties = new Dictionary<String, Object>();
        properties["cmis:name"] = "MyNewName";

        IObjectId newId = cmisobj.UpdateProperties(properties);

感谢您的回复。我尝试添加IOperationContext但我仍然得到相同的错误。我实施错了吗?

        SessionFactory factory = SessionFactory.NewInstance();
        ISession session = factory.CreateSession(parameters);

        IOperationContext oc = session.CreateOperationContext();
        ICmisObject cmisobj = session.GetObject("12345", oc);

        IDictionary<String, Object> properties = new Dictionary<String, Object>();
        properties["cmis:name"] = "MyNewName";

        IObjectId newId = cmisobj.UpdateProperties(properties);

1 个答案:

答案 0 :(得分:2)

这是一个已知的SharePoint错误。如果在更新请求中包含更改标记(属性“cmis:changeToken”),则会失败并显示此错误。 DotCMIS会自动添加此属性以防止丢失更新。

要排除更改令牌,您在获取对象时不得请求它。 使用GetObject()对象调用IOperationContext,该对象的属性过滤器不包含“cmis:changeToken”。然后,SharePoint将接受更新请求。