Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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
.net 当通过Notes URL解析文档时,Notes会话返回NotesView而不是NotesDocument_.net_Lotus Notes - Fatal编程技术网

.net 当通过Notes URL解析文档时,Notes会话返回NotesView而不是NotesDocument

.net 当通过Notes URL解析文档时,Notes会话返回NotesView而不是NotesDocument,.net,lotus-notes,.net,Lotus Notes,我使用Domino.NET包装器类允许用户将电子邮件从Lotus收件箱拖到winform 我将返回一个数据对象,它包含指向文档的notes URL,格式为 notes://server/replicaID/viewID/documentUNID 并将其传递给Domino.NotesSession.Resolve(pUrl),后者应该返回匹配的文档。事实上,在我的浏览器中粘贴链接(用http://替换notes://效果很好,我得到了电子邮件的HTML版本)是有效的 但是Resolve方法不断返

我使用Domino.NET包装器类允许用户将电子邮件从Lotus收件箱拖到winform

我将返回一个数据对象,它包含指向文档的notes URL,格式为

notes://server/replicaID/viewID/documentUNID
并将其传递给Domino.NotesSession.Resolve(pUrl),后者应该返回匹配的文档。事实上,在我的浏览器中粘贴链接(用http://替换notes://效果很好,我得到了电子邮件的HTML版本)是有效的

但是Resolve方法不断返回一个似乎是NotesView的内容,而不是实际的文档:

Dim notesSession as Domino.NotesSession = ' ...  Initialize session here
Dim notesURL as string = "notes://server/replicaID/viewId/documentID"

Dim draggedDocument = notesSession.Resolve(notesURL)
' Here, I do get an actual document, but its UnID matches the viewId 
' part of the url, not the document.
我尝试从URL中删除viewID,但没有成功。我发现成功检索文档的唯一方法是使用OLE对象(lotus命名空间):

虽然此方法有效,但我不想使用UI自动化类(OLE),而是使用Domino的COM包装器(.NET)

那么这些notes URL在互操作中究竟是如何工作的呢?有没有什么方法可以在不直接知道数据库的情况下检索匹配的文档?当给定文档URL时,为什么Resolve方法返回视图对象


欢迎任何帮助。

听起来您正在处理Resolve方法中的错误。但你的第二个想法似乎是一个合理的解决办法。不过,我认为没有必要调用
CreateObject
。包装器类应该可以正常工作

在第一个代码示例(Domino.NotesSession对象)中有notession,因此您应该能够对其调用Resolve方法,以基于您拥有的NotesUrl检索数据库对象。您不需要获取视图,只需要获取数据库对象。然后可以从该对象调用GetDocumentByUNID方法来检索所需的文档。如果Resolve方法能为您做到这一点,那将是一件好事,但听起来它让您离得足够近了

Dim notesSession as Domino.NotesSession =  <Session>
Dim notesURL as string = "notes://server/replicaID"    
Dim notesDocUNID as string = "parse URL to get the UNID"

Dim notesDatabase = notesSession.Resolve(notesURL)
Dim document = notesDatabase.GetDocumentByUNID(notesDocUNID)
Dim notesSession as Domino.notesSession=
Dim notesURL作为字符串=”notes://server/replicaID"    
Dim notesDocUNID as string=“解析URL以获取UNID”
Dim notesDatabase=notesSession.Resolve(notesURL)
Dim document=notesDatabase.GetDocumentByUNID(notesDocUNID)

Session.resolve不会返回NotesDocument。它返回一个泛型对象(在我脑海中我会说Base——所有Notes数据对象的基类)。您必须相应地调暗变量,然后检查类型并将其转换为文档

实际上,我重新键入了第二个示例并犯了一个错误:它是CreateObject(“Notes.NotesUIWorkspace”),但我想您的观点仍然正确。感谢您的见解:)关于术语的小说明:Domino.NotesSession是互操作层下面的一个COM类。Notes.NotesUIWorkspace是一个OLE类,如您所说,用于UI自动化。还有一件事:您说您尝试从URL中删除视图组件,但是否尝试将其替换为“0”,如中所示notes://server/replicaID/0/documentUNID?OK,对不起,弄混了,我在问题中解决了。我尝试按照您的建议将视图ID替换为0:它将返回数据库对象。因为我不能不解析URL,所以我将使用Ken Pespisa的方法。
Dim notesSession as Domino.NotesSession =  <Session>
Dim notesURL as string = "notes://server/replicaID"    
Dim notesDocUNID as string = "parse URL to get the UNID"

Dim notesDatabase = notesSession.Resolve(notesURL)
Dim document = notesDatabase.GetDocumentByUNID(notesDocUNID)