C# Office Automation上的COM异常-Windows服务C

C# Office Automation上的COM异常-Windows服务C,c#,windows-services,office-automation,C#,Windows Services,Office Automation,我开发了一个windows服务,它可以读取doc/docx文件,根据数据库记录替换值,并将替换的文档转换为PDF 已使用Microsoft Office Interop DLL进行转换。该服务托管在两台不同的机器上Win Server 2008 R2 Enterprise-64位。我不得不 在DCOM设置中将身份设置为交互用户以解决异常: 由于以下错误,检索CLSID为{000209FF-0000-0000-C000-0000000000 46}的组件的COM类工厂失败:8000401a。 最初

我开发了一个windows服务,它可以读取doc/docx文件,根据数据库记录替换值,并将替换的文档转换为PDF

已使用Microsoft Office Interop DLL进行转换。该服务托管在两台不同的机器上Win Server 2008 R2 Enterprise-64位。我不得不 在DCOM设置中将身份设置为交互用户以解决异常:

由于以下错误,检索CLSID为{000209FF-0000-0000-C000-0000000000 46}的组件的COM类工厂失败:8000401a。 最初,我找不到Microsoft Windows文档的DCOM条目。因此,我必须更改注册表中的一些设置。这让我在一个系统中工作,服务运行良好。但是,在另一个系统中,服务在尝试读取或写入受保护内存时引发异常。这通常表示WorkDocument.ClearFormatting代码上的其他内存已损坏

为了克服这个问题,我将构建属性从任何CPU更改为x86。该服务在某些时候工作正常,但它刚刚开始抛出异常,检索CLSID为{000209FF-0000-0000-C000-0000000000 46}的组件的COM类工厂失败,原因是出现以下错误:再次出现8000401a。我无法确定服务何时开始抛出此异常。如果我重新启动服务,它会正常工作,但不会太长时间

我知道不建议在服务中使用MS interop。但我是在完成服务开发之后才知道这个问题的,因为我在系统上以windows应用程序的形式运行程序进行测试时没有遇到任何问题

与谷歌一起尝试,甚至解决了这个问题,但解决方案似乎是一个服务器的临时解决方案,另一个似乎工作正常。请引导我克服这种情况


谢谢

感觉您正在寻找一些工作区沟通建议。所以,当您实施了不起作用且不受支持的解决方案时,这可能不是一个寻求建议的好地方。。。在这种情况下,公开说您选择了错误的方法可能是您能做的最好的…这是CO_E_RUNAS_LOGON_失败,服务器进程无法启动,因为配置的标识不正确。检查用户名和密码。这是DCOM配置,您可以修改服务的用户帐户。是的,不要在服务中运行Office程序,它们很难排除故障。正如你发现的。像他们显示对话而不再取得进展这样的肮脏行为是无法诊断的。谢谢你的回复@汉帕桑:如果这是一个身份问题,该服务可能没有完成转换。我说的对吗???但该服务有时会将word转换为PDF格式,有时会引发异常。如果引发异常,则服务在重新启动之前不会转换。我不知道是什么让服务开始抛出异常。当用户登录到服务器时,问题不会发生。当服务器上没有活动用户时,将引发异常。好心的,一定要说明一下情况。感谢问题似乎是作为交互用户运行的服务。作为交互用户运行,该服务在用户登录时运行,如果没有用户处于活动状态,则会失败。因此,我必须将DCOM属性的运行方式从交互式用户更改为该用户,并设置凭据。我还授予了“安全”选项卡下所选凭据的所有权限。该服务现在在没有任何活动用户的情况下运行。