Как получить содержимое документа с помощью DFC в C#

У меня есть версия документа 6.6 для разработчиков. Я хочу получить содержимое документа (чтение содержимого в поток) с помощью DFC в C#. Я использовал следующий код C#.net

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

но он выбрасывает следующее исключение.

Исключение: невозможно преобразовать COM-объект типа "System.__ComObject" в интерфейсный тип "DFCLib.IDfDocument". Эта операция завершилась неудачно, поскольку вызов QueryInterface в компоненте COM для интерфейса с IID '{EFAC2D68-175B-11D2-9927-006097C27C31}' завершился неудачно из-за следующей ошибки: такой интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)),

Я также попробовал следующий метод (он работает успешно), но я не знаю, как читать содержимое в поток или поток памяти.

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

2 ответа

Исключение говорит, что не может преобразовать COM-объект в IDfDocument.

Я предполагаю, что ваша цель не является документом тогда.

Для бездокументного sysobject странно иметь контент, но это все же разрешено. Затем содержимое можно прочитать с помощью getFile, как предлагается в другом ответе.

Это выведет файл в путь к локальной файловой системе:

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. Однако я предлагаю вам взглянуть на API DFS (Documentum Foundation Services) вместо DFC. Это поддерживаемый API сейчас, и DFC устарел как публичный API. DFS имеет параметры потока при работе с содержимым репозитория.

Вы также можете проверить http://developer.emc.com/ если этот ответ не подходит для ваших нужд.

Другие вопросы по тегам