CMIS Sharepoint 2013 - не удается обновить документ

Я не могу обновить документ с помощью CMIS для 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 ответ

Решение

Это известная ошибка SharePoint. Эта ошибка не срабатывает, если вы включаете токен (свойство "cmis:changeToken") в запрос на обновление. DotCMIS автоматически добавляет это свойство, чтобы предотвратить потерю обновлений.

Чтобы исключить токен изменения, вы не должны запрашивать его при получении объекта. Вызов GetObject() с IOperationContext объект, который имеет фильтр свойств, который не содержит "cmis:changeToken". SharePoint примет запрос на обновление.

Другие вопросы по тегам