解析文件,當我使用Domino .NET包裝類,允許用戶從自己的Lotus收件箱拖到電子郵件到一個winform的NotesView的NotesDocument代替。Notes會話收益率的票據URL
我得到的數據對象回來,包含註釋URL的文檔,表單
notes://server/replicaID/viewID/documentUNID
並將它傳遞給這應該返回匹配Domino.NotesSession.Resolve(金銀絲)文件。其實,在我的瀏覽器中粘貼鏈接(替換註釋://通過http://就像一個魅力,我得到了電子郵件的HTML版本)。
但解決方法將繼續返回什麼似乎是一個爲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對象(蓮花命名空間):
' Get UnId from url
Dim unid as String = notesURL.Split("/").Last()
' Get UI Automation object
Dim workspace = CreateObject("Notes.NotesUIWorkspace")
' Get currently open DB (the where the drag event was initiated)
Dim notesDb = workspace.CURRENTDATABASE.Database
' Retrieve matching document
Dim notesDoc = notesDb.GetDocumentByUNID(unid)
雖然這種方法可行,我不想使用UI自動化類(OLE),但多米諾COM包裝(.NET)。
那麼,如何準確地這些筆記的URL在互操作工作?有什麼辦法可以在不知道數據庫的情況下檢索匹配的文檔嗎?爲什麼Resolve方法在給定文檔URL時返回視圖對象?
任何幫助歡迎。
其實,我重新輸入第二個樣本,並犯了一個錯誤:它的CreateObject(「Notes.NotesUIWorkspace」),但我想你的觀點仍然是正確。感謝您的見解:) – 2012-07-06 15:13:19
小澄清術語:本Domino.NotesSession是互操作層下面的COM類。如您所說,Notes.NotesUIWorkspace是一個OLE類,用於UI自動化。 一件事:你說你試圖從URL中移除視圖組件,但你嘗試用「0」代替它,使用注意事項://服務器/ replicaID/0/documentUNID? – 2012-07-06 15:35:44
好的,抱歉,我在問題中解決了這個問題。我試圖按照您的建議將視圖ID替換爲0:它將返回數據庫對象。由於我無法解析網址,因此我會採用Ken Pespisa的方法。 – 2012-07-06 17:46:52