将 DotCMIS 用于 Alfresco 时出现错误 "Property 'cm:title' doesn't exsist"
Error "Property 'cm:title' doesn't exsist" while using DotCMIS for Alfresco
我使用 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: Property 'cm:title' doesn't exist!
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)
bei DotCMIS.Client.Impl.Session.GetRootFolder(IOperationContext context)
bei DotCMIS.Client.Impl.Session.GetRootFolder()
bei ConsoleApplication3.Program.ConnectingUsingAtomPub_CreateFolder()
我猜,我在这里遗漏了一些基础知识,但我在网上搜索,只找到 https://github.com/wk-j/alfresco-cmis/issues/1。
但是我不知道如何应用它,或者它是否是正确的。
正如 Gagravarr 所建议的,就这么简单:将连接端点更改为 CMIS 1.0,查询工作正常。如果我用 PortCMIS 和 CMIS 1.1 找到合适的解决方案,我稍后会post。
parameters[DotCMIS.SessionParameter.AtomPubUrl] = "http://127.0.0.1:8888/alfresco/api/-default-/public/cmis/versions/1.0/atom";
我使用 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: Property 'cm:title' doesn't exist! 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) bei DotCMIS.Client.Impl.Session.GetRootFolder(IOperationContext context) bei DotCMIS.Client.Impl.Session.GetRootFolder() bei ConsoleApplication3.Program.ConnectingUsingAtomPub_CreateFolder()
我猜,我在这里遗漏了一些基础知识,但我在网上搜索,只找到 https://github.com/wk-j/alfresco-cmis/issues/1。
但是我不知道如何应用它,或者它是否是正确的。
正如 Gagravarr 所建议的,就这么简单:将连接端点更改为 CMIS 1.0,查询工作正常。如果我用 PortCMIS 和 CMIS 1.1 找到合适的解决方案,我稍后会post。
parameters[DotCMIS.SessionParameter.AtomPubUrl] = "http://127.0.0.1:8888/alfresco/api/-default-/public/cmis/versions/1.0/atom";