0

我尝试使用互操作打开 .doc 文件,当我在 Visual Studio 中运行时,结果是一个文件,但我将 Web 发布到 IIS 结果为空。我将文件夹桌面添加到 C:\Windows\SysWOW64\config\systemprofile,我运行网站,处理 Word 运行但仍然没有返回结果。我使用的是 Windows server 2012 64bit 和 Microsoft Office 2007。为什么导致 IIS 返回 null 和解决方案?

 var wordApp = new Application { Visible = false };
 var path = Request.PhysicalApplicationPath + "File\\TestFile.doc";
 object srcPath = path;
 var wordDoc = wordApp.Documents.Open(ref srcPath);
4

1 回答 1

0

参考链接

有时使用 Office 互操作的东西可能会很尴尬。

如果您使用单个用户访问应用程序一词,即您的 asp.net 服务用户名。

然后您可以做的是使用该用户名登录计算机并打开单词,然后添加办公应用程序似乎使用的所有注册表和文件系统更改。注意:如果您也打算使用 Excel,那么您还需要打开 excel。

另一种方法是创建一个用于访问 Word 的新用户帐户,然后执行上述操作并在您的代码中模拟该用户,这样您就不会授予 Web 应用程序用户访问 Word 的权限。

希望这可以帮助

ps 使用office interop 时,注意对对象的脏引用很重要。留下脏引用会留下幽灵 Word/Excel 进程(仅在任务管理器中可见)。

我总是做的一件事是创建一个新的 AppDomain,这意味着当前进程没有风险。然后我总是按如下方式释放对象

if (item != null)

{ 

 while (Marshal.ReleaseComObject(item) > 0); 
 item = null;

} 

其中 item 是文档对象、应用程序对象等。此代码应放在 finally 块中,以便它始终运行

以防万一你是办公室互操作的新手,当我刚开始时,这个让我忙了一段时间。

于 2013-07-20T05:16:22.100 回答