解决IIS服务使用C#代码在Windows Server 2008上无法启动Excel的问题
2017-08-24 10:01
1521 查看
最近遇到一个后台导出Excel文件的问题,用的是C#语言,调用Office的Excel组件实现。本机操作系统为Windows 7 X64,安装了Office 2013。启动Excel的代码为:
参考解决步骤如下:
组件服务-->控制台根节点-->组件服务-->计算机-->我的电脑-->DCOM配置-->Microsoft Excel Application属性-->安全,在“启动和激活权限”、“访问权限”、“配置权限”中分别添加Network
Service用户和IIS IUSRS用户,并配置权限为允许本地启动、远程启动、本地激活、远程激活。
再到IIS中进行应用程序池配置:
Internet Information Services(IIS)管理器-->应用程序池-->LYWebGISCC-->高级设置-->标识-->内置账户-->NetworkService
这些步骤正常执行后,依然无法导出,会报错。
这时,回想起刚才的配置过程,原来还少了关键一步,就是进行账户验证的配置,将Microsoft Excel Application属性的身份验证级别从“默认”修改为“无”。
配置过程中如果遇到下述错误,
检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。 (异常来自 HRESULT:0x8000401A)。
可通过修改应用程序池的标识(修改为“NetworkService”)解决。
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();保存Excel文件的代码为:
workbook.SaveAs(fileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);本地测试是没有任何问题的。但是程序部署到服务器(Windows Server 2008,安装了Office 2016)上,却死活导不出Excel文件。根据日志调试时发现,在启动Excel时出错了,错误信息为:
检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问。 (异常来自 HRESULT:0x80070005 (E_ACCESSDENIED))根据网上的参考,修改Microsoft Excel Application的权限,并且修改IIS应用程序池标识为Network Service,依然无法解决。
参考解决步骤如下:
组件服务-->控制台根节点-->组件服务-->计算机-->我的电脑-->DCOM配置-->Microsoft Excel Application属性-->安全,在“启动和激活权限”、“访问权限”、“配置权限”中分别添加Network
Service用户和IIS IUSRS用户,并配置权限为允许本地启动、远程启动、本地激活、远程激活。
再到IIS中进行应用程序池配置:
Internet Information Services(IIS)管理器-->应用程序池-->LYWebGISCC-->高级设置-->标识-->内置账户-->NetworkService
这些步骤正常执行后,依然无法导出,会报错。
这时,回想起刚才的配置过程,原来还少了关键一步,就是进行账户验证的配置,将Microsoft Excel Application属性的身份验证级别从“默认”修改为“无”。
配置过程中如果遇到下述错误,
检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。 (异常来自 HRESULT:0x8000401A)。
可通过修改应用程序池的标识(修改为“NetworkService”)解决。
相关文章推荐
- 关于IIS服务启动失败的问题:“IIS提示‘另一个程序正在使用此文件,进程无法访问’”,的解决方法
- Windows server 2008 HTTP.sys被禁用导致80端口被禁用和IIS服务无法启动解决办法
- linux下使用crontab无法启动tomcat服务问题解决办法
- windows2003 IIS 服务启动失败,提示‘另一个程序正在使用此文件,进程无法访问',解决方法
- windows2003 IIS 服务启动失败,提示‘另一个程序正在使用此文件,进程无法访问',解决方法!
- 如何解决Windows Server 2008 服务启动不能调用Office Word的问题
- 今天解决了BXP4.1在windows server 2003下无法自动启动ardencepxe服务的问题
- 如何解决Windows Server 2008 服务启动不能调用Office Word的问题
- MySQL下载安装、配置、使用及无法启动MySQL服务问题解决
- 解决部分软件在windows server 2008 中无法使用的方法
- Avira AntiVir 造成 SqlServer 服务无法正常启动问题的解决
- c#代码:使用假设的方法遍历解决“谁养鱼”问题(据说是爱因斯坦所出的一道推理题)
- Windows installer 服务无法启动 问题解决方法
- .Net下使用System.Data.OracleClient出现“ORA-12154问题“TNS: 无法处理服务名”问题的解决
- 因计算机磁盘硬件配置问题windows无法启动及HP系列机器不能使用GHOST的解决方法
- 关于SQL Server 2005服务无法启动,报3417错误。(附带重装SQL时解决COM+目录问题)(转帖)
- 解决OracleDBConsoleorcl服务无法启动问题(转)
- 关于"Windows不能在本地计算机启动Apache2.......并参考特定服务错误代码1"问题解决
- IIS无法启动问题的解决
- MySQL服务无法启动【错误代码1067】的解决方法