2011-03-10 63 views
1

我通过Windows服务(通过具有管理员权限的帐户运行)打开Word 2007(DOCX)文档时出现问题。C#通过Windows服务打开Word文档

 object fileNameO = templateFilename; 

     _application.Visible = visible; 
     _application.DisplayAlerts = WdAlertLevel.wdAlertsNone; 

     //opening document 
     _document = _application.Documents.OpenNoRepairDialog(ref fileNameO, 
               ref _missing, 
               ref _truevalue, 
               ref _missing, 
               ref _missing, 
               ref _missing, 
               ref _missing, 
               ref _missing, 
               ref _missing, 
               ref _missing, 
               ref _missing, 
               ref _missing, 
               ref _missing, 
               ref _missing, 
               ref _missing, 
               ref _missing); 
     //activating document 
     _document.Activate(); 

_document in _document.Activate();为空(System.NullReferenceException:未设置为一个对象的实例对象引用)

我试图打开并OpenNoRepairDialog方法打开。

这很奇怪,因为当我尝试在控制台应用程序中运行线程(服务)时,一切工作正常!

请帮助:)

+3

请注意,运行Office无人值守(无论是作为Windows服务或Web应用程序)不支持:http://support.microsoft.com/kb/257757 - 这样说,它仍可能工作有时业务需求需要它,但它是一个痛苦的世界:) – 2011-03-10 17:31:10

+0

我在我的网络应用程序中使用Exel来生成Exel文件。我遇到的问题是给应用程序池提供正确的权限来使用Exel。 – 2011-03-10 17:35:27

+0

请参阅我对[此问题] [1]的回答。它可能有帮助。 [1]:http://stackoverflow.com/questions/1006923/automating-office-via-windows-service-on-server-2008/1680214#1680214 – 2011-07-20 22:20:59

回答

0

检查您的COM +应用程序的安全性,以澄清流水账您的服务是否有初步认识的权限的Word

在命令提示符,然后按Enter
0

键入dcomcnfg; 找到并选择应用程序列表中的Microsoft Word文档,然后按属性按钮; 注意:如果您有Windows 2003 \ 2008,请在命令提示符下键入dcomcnfg,展开组件服务组,展开计算机组,展开我的计算机组,展开DCOM配置组,找到并选择Microsoft Word文档 - 点击鼠标右键 - >属性。 单击标识选项卡。选中“此用户”复选框,按浏览并指定管理员帐户; 输入并重新输入管理员密码;

http://www.neevia.com/support/examples/cr/?get=ex002aspnet

1

启动DCOMCNFG.EXE(组件服务)

然后控制台根 - >组件服务 - > Computers->我的电脑> DCOM Config->的Microsoft Word文档 - >右键单击(属性) - >身份标签

然后选择交互式用户而不是启动用户。通过设置此MSWord将以当前登录的用户权限执行。