找不到间歇文件异常,使用NetOffice创建Excel文件(C#)检索COM类

问题描述 投票:1回答:1

我有一个程序在已安装Office 2007的SBS 2008服务器上运行,并在通过电子邮件发送的Excel文件中创建报告。我正在使用NetOffice创建Excel文件,并且大多数情况下都可以使用。但是,它经常抛出“未找到文件”异常并失败。

完整的例外是:

内部异常:System.IO.FileNotFoundException:由于以下错误,检索具有CLSID {00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败:8007007e找不到指定的模块。 (来自HRESULT的异常:0x8007007E)。在System.Runtime.Remoting.Activation.Activation.ActivationServices.CreateInstance(RuntimeType serverType)在System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType,Object [] props在System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType) ,System.RuntimeTypeHandle.CreateInstance(RuntimeType类型,布尔publicOnly,布尔noCheck,布尔&canBeCached,RuntimeMethodHandleInternal&ctor,布尔&bNeedSecurityCheck)处的System.RuntimeType.CreateInstanceSlow(布尔publicOnly,布尔skipCheckThis,布尔的fillCache和StackCrawl) .RuntimeType.CreateInstanceDefaultCtor(布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawlMark和stackMark)位于System.Activator.CreateInstance(类型类型,布尔非公共)位于System.Activator.CreateInstance(类型类型)位于NetOffice.COMObject.CreateFromProgId(字符串progId,布尔值factoryAddObject)资料来源:NetOffice堆栈跟踪:位于NetOffice.ExcelApi.Application..ctor()的NetOffice.ExcelApi.Application..ctor()处的NetOffice.ExcelApi.Application..ctor()处的NetOffice.ExcelApi.Application..ctor(布尔值),位于CCDExceptionReport.Program.Main(String [] args)目标站点:无效CreateFromProgId(System.String,Boolean)

如果我立即重新运行该程序,它将始终成功运行。

我已尝试全部重建,替换服务器上的文件,在VS 2019和2017中进行编译。

c# filenotfoundexception netoffice
1个回答
0
投票

我终于能够解决这个问题。

我遵循了有关根据需要创建桌面文件夹的建议,在此处进行了说明:Why does systemprofile need Desktop folder to open excel file

我使用了dcomcnfg.exe并为Microsoft Excel应用程序属性设置了安全性,以包括计划任务作为其运行的用户。

都不起作用。

最后,通过fl幸,我正在仔细检查安全性,然后单击“身份”选项卡。我将其更改为“启动用户”,而不是“交互式用户”,现在所有使用NetOffice加载项的程序都可以通过任务管理器运行。

我相信所有这三个元素都必须存在,桌面文件夹,适当的安全性和适当的身份设置。

要获得安全性和身份设置,我运行了dcomcnfg.exe扩展的DCOM配置右键单击Microsoft Excel应用程序点击属性编辑的安全性选项卡编辑的身份]]

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.