C# CMIS Sharepoint 2013-无法更新文档
我无法使用CMIS for Sharepoint 2013更新文档。我一直收到一个错误“操作试图更新一个不再是当前的对象。”我一直在想为什么会这样 请检查我下面的代码有什么问题:C# CMIS Sharepoint 2013-无法更新文档,c#,sharepoint,sharepoint-2013,opencmis,dotcmis,C#,Sharepoint,Sharepoint 2013,Opencmis,Dotcmis,我无法使用CMIS for Sharepoint 2013更新文档。我一直收到一个错误“操作试图更新一个不再是当前的对象。”我一直在想为什么会这样 请检查我下面的代码有什么问题: Dictionary<string, string> parameters = new Dictionary<string, string>(); parameters[DotCMIS.SessionParameter.BindingType] = Binding
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);
Dictionary参数=新建Dictionary();
参数[DotCMIS.SessionParameter.BindingType]=BindingType.AtomPub;
参数[DotCMIS.SessionParameter.AtomPubUrl]=url;
参数[DotCMIS.SessionParameter.User]=用户名;
参数[DotCMIS.SessionParameter.Password]=密码;
参数[SessionParameter.RepositoryId]=RepositoryId;
SessionFactory=SessionFactory.NewInstance();
ISession session=factory.CreateSession(参数);
ICmisObject cmisobj=session.GetObject(“12345”);
IDictionary properties=新字典();
属性[“cmis:name”]=“MyNewName”;
IObjectId newId=cmisobj.UpdateProperties(属性);
谢谢你的回复。我尝试添加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);
SessionFactory=SessionFactory.NewInstance();
ISession session=factory.CreateSession(参数);
IOperationContext oc=session.CreateOperationContext();
ICmisObject cmisobj=session.GetObject(“12345”,oc);
IDictionary properties=新字典();
属性[“cmis:name”]=“MyNewName”;
IObjectId newId=cmisobj.UpdateProperties(属性);
这是一个已知的SharePoint错误。如果在更新请求中包含更改令牌(属性“cmis:changeToken”),则会因此错误而失败。DotCMIS自动添加此属性以防止更新丢失
要排除更改令牌,在获取对象时不能请求它。
使用
IOperationContext
对象调用GetObject()
,该对象具有不包含“cmis:changeToken”的属性筛选器。SharePoint随后将接受更新请求。感谢您的回复。我尝试添加IOperationContext,但仍然得到相同的错误SessionFactory=SessionFactory.NewInstance();ISession session=factory.CreateSession(参数配置);IOperationContext oc=session.CreateOperationContext();ICmisObject cmisobj=session.GetObject(“12345”,oc);IDictionary properties=新字典();属性[“cmis:name”]=“NewName”;IObjectId newId=cmisobj.UpdateProperties(属性);你漏了一步。在调用GetObject()之前添加此行:oc.FilterString=“cmis:objectId,cmis:objectTypeId,cmis:name”;//在此处添加所需的所有属性