2012-09-08 44 views
3

我有documentum開發人員版本6.6。我想在C#中使用DFC獲取文檔內容(將內容讀入流)。我用下面的C#.NET代碼如何在C中使用DFC獲取文檔內容#

IDfId id = collection.getId("r_object_id"); 
IDfDocument doc = (IDfDocument) session.getObject(id); 

但它拋出以下異常。

Exception: Unable to cast COM object of type 'System.__ComObject' to interface type 'DFCLib.IDfDocument'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{EFAC2D68-175B-11D2-9927-006097C27C31}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

我也試過下面的方法(它運行成功),但我不知道如何將內容讀入流或內存流。

IDfId id = collection.getId("r_object_id"); 
IDfSysObject sysObject = (IDfSysObject) session.getObject(id); 

回答

0

這將文件轉儲到本地文件系統路徑:

IDfId id = collection.getId("r_object_id"); 
IDfSysObject sysObject = (IDfSysObject) session.getObject(id); 

sysObject.getFile(<path>) 

然後你就可以使用標準的.NET IO庫打開該文件作爲流,例如:

var stream = new System.IO.StreamReader(<path>) 

我相信DFC有一些基於流的公共方法(getContent?),但我沒有看到它們在.Net中成功使用。但是,我建議您查看DFS(Documentum Foundation Services)API而不是DFC。這是現在支持的API,DFC已被棄用爲公共API。處理存儲庫內容時,DFS確實具有流選項。

如果此答案不足以滿足您的需求,您可能還需要檢查http://developer.emc.com

0

該異常說明它不能將COM對象轉換爲IDfDocument。

我猜你的目標不是文件。

非文檔sysobject有一個內容是很奇怪的,但它仍然是允許的。 然後可以按照其他答案中的建議使用getFile讀取內容。

相關問題