【问题标题】:Error "Property 'cm:title' doesn't exsist" while using DotCMIS for Alfresco使用 DotCMIS for Alfresco 时出现错误“属性 'cm:title' 不存在”
【发布时间】:2016-05-18 12:49:27
【问题描述】:

我使用 Visual Studio 2010 C# 通过 dotCMIS 与本地 Alfresco-Server 建立了会话

Dictionary<string, string> parameters = new Dictionary<string, string>();    
parameters[DotCMIS.SessionParameter.BindingType] = BindingType.AtomPub;      
parameters[DotCMIS.SessionParameter.AtomPubUrl] = "http://127.0.0.1:8888/alfresco/api/-default-/public/cmis/versions/1.1/atom";           
parameters[DotCMIS.SessionParameter.User] = "admin";
parameters[DotCMIS.SessionParameter.Password] = "admin";           
SessionFactory factory = SessionFactory.NewInstance();    
IList<IRepository> repos = factory.GetRepositories(parameters);
ISession session = repos.ElementAt(0).CreateSession();    

但是当我尝试获取像

这样的根文件夹时
IFolder root = session.GetRootFolder(); 

或运行类似

的查询
string queryGetDoc = "SELECT * FROM cmis:document WHERE cmis:name='Bug101.png'";
IItemEnumerable<IQueryResult> docResults = session.Query(queryGetDoc, false);
IQueryResult docHit = docResults.FirstOrDefault();
string docId = docHit["cmis:objectId"].FirstValue.ToString();

IDocument document = session.GetObject(docId) as IDocument;

IList<IProperty> listOfProperties = document.Properties;

foreach (IProperty p in listOfProperties)
{
    Console.WriteLine(p.QueryName);
}

我收到一条错误消息:

DotCMIS.Exceptions.CmisRuntimeException:属性“cm:title”不存在! bei DotCMIS.Client.Impl.ObjectFactory.ConvertProperty(IObjectType objectType, IPropertyData pd) bei DotCMIS.Client.Impl.ObjectFactory.ConvertProperties(IObjectType objectType, IProperties properties) bei DotCMIS.Client.Impl.AbstractCmisObject.Initialize(ISession session, IObjectType objectType, IObjectData objectData, IOperationContext context) bei DotCMIS.Client.Impl.Folder..ctor(ISession session, IObjectType objectType, IObjectData objectData, IOperationContext context) bei DotCMIS.Client.Impl.ObjectFactory.ConvertObject(IObjectData objectData, IOperationContext context) bei DotCMIS.Client.Impl.Session.GetObject(String objectId, IOperationContext context) bei DotCMIS.Client.Impl.Session.GetObject(IObjectId objectId, IOperationContext context) 北 DotCMIS.Client.Impl.Session.GetRootFolder(IOOperationContext 上下文) 北 DotCMIS.Client.Impl.Session.GetRootFolder() 北 ConsoleApplication3.Program.ConnectingUsingAtomPub_CreateFolder()

我只能猜测,我在这里遗漏了一些基础知识,但我搜索了网络,只找到了https://github.com/wk-j/alfresco-cmis/issues/1

但是我不知道如何应用它,或者它是否是正确的。

【问题讨论】:

  • 如果您尝试连接到 CMIS 1.0 端点会发生什么? IIRC DotCMIS 不支持 CMIS 1.1,对于 .Net 和 CMIS 1.1,您需要使用 PortCMIS instead
  • 请注意 cmis:title 属性是在方面定义的,因此如果您使用 CMIS 1.0 绑定,它本身不理解方面(CMIS 将它们称为辅助类型),您将只能看到属性在类型上定义,您不会看到任何可能应用于对象的方面的定义。
  • 非常感谢 Gagravarr,用 1.0 连接成功了!也许我也想试试 PortCMIS,以防我想使用 Jeff Potts 提到的方面。非常感谢你们!

标签: c# alfresco dotcmis


【解决方案1】:

正如 Gagravarr 所建议的,就这么简单:将连接端点更改为 CMIS 1.0,查询就可以正常工作。如果我找到 PortCMIS 和 CMIS 1.1 的合适解决方案,我会在稍后发布。

parameters[DotCMIS.SessionParameter.AtomPubUrl] = "http://127.0.0.1:8888/alfresco/api/-default-/public/cmis/versions/1.0/atom";           

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 2021-01-16
    • 2018-02-04
    • 1970-01-01
    相关资源
    最近更新 更多