我尝试使用interop打开.doc文件,当我在Visual Studio中运行时结果是一个文件,但我发布web到IIS结果为null。 我将文件夹桌面添加到C:\ Windows \ SysWOW64 \ config \ systemprofile,我运行网站,处理Word运行但仍然没有返回结果。 我正在使用Windows Server 2012 64位和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);
答案 0 :(得分:0)
有时使用Office互操作资料可能会很尴尬。
如果您使用单个用户访问word应用程序,即您的asp.net服务用户名。
然后你可以做的是使用该用户名登录计算机并打开单词,然后添加office应用程序似乎使用的所有注册表和文件系统更改。注意:如果您计划使用Excel,那么您还需要打开Excel。
另一种方法是创建一个用于访问Word的新用户帐户,然后执行上述操作并在您的代码中模拟该用户,这样您就不会让Web应用程序用户访问word。
希望这有帮助
P.S。使用office互操作时,重要的是要注意对象的脏引用。离开脏引用会留下鬼Word / Excel进程(仅在任务管理器中可见)。
我总是提供帮助的一件事是创建一个新的AppDomain,这意味着当前进程没有风险。然后我总是按如下方式释放对象
if (item != null)
{
while (Marshal.ReleaseComObject(item) > 0);
item = null;
}
其中item是文档对象,应用程序对象等。此代码应该放在Finally块中,以便它始终运行
以防万一你是新来的办公室互联网,这个让我忙碌了一段时间才开始。