c#和word与citrix的交互导致崩溃

本文关键字:交互 崩溃 citrix word | 更新日期: 2023-09-27 18:10:30

我手头有一个应用程序,它应该复制一个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做类似的事情确实有效!这是最让我生气的!

c#和word与citrix的交互导致崩溃

Office互操作在"类服务器场景"中不被MS支持(在我看来,Citrix是一种特殊的场景)…见http://support.microsoft.com/default.aspx?scid=kb; en - us; q257757 # kb2

您的选项包括几个库(免费和商业)-例如:

  • MS OpenXML SDK(免费)
  • Aspose。单词(商业)

UPDATE - OP:

MS表示它不支持(Word和Excel都不支持!),这并不意味着它不能工作-只是你不能依赖它工作…既然你写你使用DOC(而不是DOCX),我怀疑你被我上面提到的商业库困住了…对于Excel,也有像Aspose这样的商业选项。