C# 在ASP.NET应用程序中创建Microsoft Word对象

C# 在ASP.NET应用程序中创建Microsoft Word对象,c#,asp.net,.net,iis-7.5,office-interop,C#,Asp.net,.net,Iis 7.5,Office Interop,我在2008 R2服务器上有一个IIS 7.5,运行的应用程序使用ASP.NET和framework 4.0。应用程序创建一个word报告,首先打开一个HTML网页,选择所有内容并将其复制到word模板,然后将其保存在一个位置。如果我运行Visual Studio Express 2010应用程序表单,该应用程序运行良好,并且完成了它应该做的一切。但是当我从IIS运行它时,应用程序挂起。我将InternetExplorer对象和Word对象设置为visible,这样我可以看到正常发生的事情被设置

我在2008 R2服务器上有一个IIS 7.5,运行的应用程序使用ASP.NET和framework 4.0。应用程序创建一个word报告,首先打开一个HTML网页,选择所有内容并将其复制到word模板,然后将其保存在一个位置。如果我运行Visual Studio Express 2010应用程序表单,该应用程序运行良好,并且完成了它应该做的一切。但是当我从IIS运行它时,应用程序挂起。我将InternetExplorer对象和Word对象设置为visible,这样我可以看到正常发生的事情被设置为false,并且Internet Explorer不可见或Word,即使我可以在任务管理器中看到进程已启动并正在运行。如果我让它运行,将抛出一个异常,该异常表示:

此命令不可用,因为未打开任何文档

使用代码执行第一个操作时,代码为word.ActiveDocument.Select;这是在word.Documents.Open之后;如果我说一句话,激活;在word.Documents.Open之前;将引发另一个异常,该异常表示:

无法激活应用程序

我们的AppPool设置为具有超级管理员权限的本地用户,文件夹同时具有用户、AppPool和本地用户,我已将DCOM设置为默认值,并添加了缺少的用户。我知道微软建议不要使用办公自动化,但目前我们正在使用它

我想问题出在一些权限上,但我不知道还有什么地方可以看。另外,非常奇怪的是,应用程序被设置为可见,进程在任务管理器中显示为启动并运行,但甚至没有显示IE窗口

编辑:

我将更改代码以使用OpenXMLSDK作为我遇到的所有信息和注释,但我将保留问题,以查看是否有人有更多信息。问题的另一部分是,IE对象已创建、初始化,进程已启动,但即使对象设置为可见,也没有可见的窗口。任何人都可以对此进行照明吗

我在用电话


InternetExplorer类。

从ASP.NET或其他服务器技术使用Office互操作是一个可怕的想法。这些API是为在桌面应用程序中使用而编写的,用于自动化Office一套桌面应用程序。服务器应用程序在许多方面都不同,因此在其中使用Office互操作是一个非常非常糟糕的主意。它也不受Microsoft支持,可能会违反您的Office许可证。谢谢,我知道微软不支持它,也不推荐它,但这是我收到的代码,我知道我没有权力更改它。我会做的,但一旦我得到允许。现在我的任务是让它工作,我寻求帮助谢谢!你不会成功的。这就是重点。请让您的主管阅读此评论。它不能工作。有时候,你可以让它看起来很有效,直到你意识到它不起作用。例如,它似乎适用于没有图片的文档,但一旦文档中有图片,它就会失败。或者一种字体与另一种字体。真的,告诉你的主管我说过不要那样做。这是来自艰苦的经验,不是因为微软这么说。谢谢你,我会让他们知道,只是顺便说一句,他们已经使用这个应用程序多年了,至少有20个用户,我们正在将它迁移到一个新的服务器,这就是我们遇到的问题。新服务器的配置和规格与前一个服务器相同。我去过那里。这是关于看起来有用的部分。最有可能的是,用户已经习惯了应用程序中的bug,并且知道如何解决它们。如果他们意识到这里到底发生了什么,他们会害怕的。这不是一个小问题,也不是微软最了解的问题。您基本上混合了两种完全不同的编程模型,并期望它能够工作。简单地说,Office产品是桌面应用程序,并假定它们在桌面环境中运行。服务器环境非常不同。违背假设是个坏主意。