2015-04-08 4 views
0

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

ответ

2

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

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

+0

Благодарим за отзыв. Я попытался добавить IOperationContext, но все равно получаю ту же ошибку SessionFactory factory = SessionFactory.NewInstance(); ISession session = factory.CreateSession (параметрирование); IOperationContext oc = session.CreateOperationContext(); ICmisObject cmisobj = session.GetObject ("12345", oc); IDictionary properties = new Dictionary (); Свойства ["cmis: name"] = "NewName"; IObjectId newId = cmisobj.UpdateProperties (свойства); – LeneyBelle

+0

Вы пропустили шаг. Добавьте эту строку перед вызовом GetObject(): 'oc.FilterString =" cmis: objectId, cmis: objectTypeId, cmis: name "; // добавьте все свойства, которые вам нужны здесь. –

+0

Это сработало !!! Спасибо!!! : D – LeneyBelle

Смежные вопросы