C # и взаимодействие слов с Citrix приводит к сбою

У меня есть приложение, которое должно скопировать Word-файл, открыть копию, найти / заменить ряд значений в документе и сохранить его. Прекрасно работает с Office-Interop с VB6 или C #. Теперь у конечного пользователя есть настройка citrix, и здесь команда на открытие документа приводит к сбою вызывающего приложения.

Вот пример кода C # до момента, когда он вызывает исключение:

try
{
    app = new ApplicationClass();
    app.Visible = true;

    object fileName = @"C:\some_document.doc";
    object readOnly = false;
    object isVisible = app.Visible;
    object missing = System.Reflection.Missing.Value;

    doc = app.Documents.Open(ref fileName,
                ref missing, ref readOnly,
                ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing,
                ref missing, ref missing, ref isVisible,
                ref missing, ref missing, ref missing);
}
catch (Exception exception)
{
    MessageBox.Show(exception.Message);
}

Появляется сообщение «Попытка чтения или записи в защищенную память. Часто это указывает на то, что другая память повреждена». Ошибка возникает при открытии команды.

Как указывалось ранее, все работает нормально, пока Word не запускается поверх Citrix.

Теперь, какие у меня варианты? Я хотел бы знать, почему это происходит и что можно изменить, чтобы я мог использовать существующий код, редактирующий документы. Я бы использовал библиотеку для поиска и замены, вообще не используя Word, поэтому я был бы рад получить подсказки по продуктам, которые я мог бы использовать. Поскольку я не ищу здесь чего-то особенного, я не хочу вкладывать много денег.

Ой, это же DOC-файлы, а не DOCX!

Я забыл упомянуть: что-то подобное с Excel и Interop действительно работает! Вот что меня больше всего призывает!


person BigBlackDog    schedule 06.10.2011    source источник


Ответы (1)


Office Interop НЕ поддерживается MS в «серверных сценариях» (которые, по-моему, Citrix - это особый вид) ... см. http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757#kb2

Ваши варианты включают несколько библиотек (бесплатных и коммерческих), например:

ОБНОВЛЕНИЕ - после РЕДАКТИРОВАНИЯ ОП:

MS указывает, что он НЕ поддерживается (ни для Word, ни для Excel!), Это не означает, что он не может работать - только то, что вы не можете полагаться на его работу ... поскольку вы пишете, что используете DOC (не DOCX) Я подозреваю, что вы застряли с коммерческими библиотеками, подобными той, которую я упомянул выше ... для Excel также доступны коммерческие опции, такие как Aspose.Cells, Flexcel, SpreadsheetGear ...

person Yahia    schedule 06.10.2011
comment
OpenXML работает только с docx-файлами, поэтому для меня это не вариант. Другой вариант выглядит красиво, но очень дорого. - person BigBlackDog; 06.10.2011
comment
Разве не причина «не поддерживать» в том, что они не могут гарантировать, что при использовании взаимодействия не может появиться всплывающее окно и что при настройке сервера (без консоли) не будет возможности закрыть такой диалог? - person Eddy; 06.10.2011
comment
@Eddy есть несколько других причин (одна из них - та, которую вы упомянули) ... пожалуйста, перейдите по первой ссылке в моем ответе, MS подробно описывает причины ... - person Yahia; 06.10.2011