Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Word自动化服务器端不工作_C#_Asp.net_Iis_Ms Word_Office Interop - Fatal编程技术网

C# Word自动化服务器端不工作

C# Word自动化服务器端不工作,c#,asp.net,iis,ms-word,office-interop,C#,Asp.net,Iis,Ms Word,Office Interop,前言:是的,我知道微软不建议这样做。但是,此服务器在一个受到严格限制的VLAN中面向内部 目标是自动生成特定类型的报告,这些报告无法使用Office XML正确格式化。Microsoft不建议这样做的原因之一是用户帐户必须是交互式的(即不是ASPNET)。因此,如果我将应用程序池标识设置为以用户身份运行,则不会再出现COM错误,但Word仍然不会使用以下测试代码打开: //Just checking if Word can be accessed Word.Application app = n

前言:是的,我知道微软不建议这样做。但是,此服务器在一个受到严格限制的VLAN中面向内部

目标是自动生成特定类型的报告,这些报告无法使用Office XML正确格式化。Microsoft不建议这样做的原因之一是用户帐户必须是交互式的(即不是ASPNET)。因此,如果我将应用程序池标识设置为以用户身份运行,则不会再出现COM错误,但Word仍然不会使用以下测试代码打开:

//Just checking if Word can be accessed
Word.Application app = new Word.Application();
app.Visible = true;

我没有收到任何错误,但Word不会打开。当我在用VisualStudio调试的开发机器上使用它时,这是可行的,但在部署的测试机器上,我什么也得不到。任何提示都将不胜感激。

即使应用程序池在用户帐户下运行,但这并不意味着它是交互式的,可以访问您的桌面。您可以查看正在运行的进程列表,以确定Word是否存在

如您所知:在“类似服务器的场景”(IIS/ASP.NET是一种特殊的场景)中,MS不支持Office互操作/自动化。。。看

您的选择包括几个图书馆(免费和商业)-例如:

  • (免费)
  • (商业)

自从Windows Vista引入了一些更改来阻止任何Windows服务(IIS只是一些特殊的服务)执行任何“类似桌面”的操作-这是由于安全问题。。。要解决这种情况,您需要绕过MS实施的安全措施-我绝对不建议…

当您说Word不会打开时,您的意思是看不到Word的用户界面吗?执行Word自动化不需要UI,厄运和黑暗警告仍然存在。@RobertHarvey取决于您使用的确切功能。。。但这不是我的重点。。。请阅读我答案顶部的MS链接…我知道它不受支持或建议。但是,它仍然可以运行。OpenXML不适合高级格式。正如我提到的,我知道微软不支持它,但正如我所说的,安全不是问题,这也是微软不推荐的原因)@pendraggon87安全不是微软不支持它的唯一原因,有技术原因,也有法律原因!纠正法律问题。然而,由于这是一个小团队的内部活动,并且我们都拥有合法的许可证,因此没有法律问题。对于技术问题,肯定存在性能问题,它可能会挂起,等等。这是一个丑陋的权宜之计,但管理层不想为Apose或其他商业产品掏钱,至少在他们看到好处之前是这样。这是一个奇怪的第22条陷阱——他们在看到结果之前不会付钱,但除非他们付钱,否则很难展示结果。在此之前,我一直坚持使用这个解决方案:(因此列出了WINWORD.EXE。出于某种原因,应用程序没有打开(甚至使用app.Visible=true),但文件仍然被创建。