Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# CMIS Sharepoint 2013-无法更新文档_C#_Sharepoint_Sharepoint 2013_Opencmis_Dotcmis - Fatal编程技术网

C# CMIS 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

我无法使用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);
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”;//在此处添加所需的所有属性