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做类似的事情确实有效!这是最让我生气的!
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这样的商业选项。