ASP.NET:EXCEL找不到文件、权限不够之综合解决方案

错误信息:找不到“xxx.xls”。请检查文件名的拼写,并验证文件位置是否正确。

如果您正试图从最近使用的文件列表中打开该文件,请确保该文件未被重命名、移动或删除。
详细错误信息:Microsoft Excel
错误堆栈:   at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)

解决办法之一:在systemprofile中建立desktop文件夹

64位:C:\Windows\SysWOW64\config\systemprofile\Desktop

32位:C:\Windows\System32\config\systemprofile\Desktop

 

解决办法之二:IIS提权,将应用程序池改为Local System(本地程序)

进入“Internet 信息服务(IIS)管理器”,然后选择左侧列表的应用程序池,在右边选择你的站点,右击选择“高级设置 ”,在打开的对话框中,找到“进程模型”节点,将“标识”从ApplicationPoolIdentity改成LocalSystem。

IIS6应用程序池:

IIS7应用程序池:

 

解决办法之三:DCOM提权

错误信息:

检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 8000401a。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Runtime.InteropServices.COMException: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 8000401a。

解决办法:

运行dcomcnfg打开组件服务,依次展开"组件服务"->"计算机"->"我的电脑"->"DCOM配置"

找到"Microsoft Excel应用程序"或"Microsoft Word应用程序",

点击"安全"选项卡,依次把"启动和激活权限","访问权限","配置权限",都选择为自定义,

然后依次点击它们的编辑,把everyone添加进去,并加入所有的权限...

1.开始->运行->dcomcnfg ,打开组件服务
2.依次打开 组件服务->计算机->我的电脑->DCOM配置,在右边框加会显示很多组件,如图:

3.找到 Microsoft Excel 应用程序,点右键属性,如图:

4.打开属性窗口后,
 A.选择 常规,在 身份验证级别 中选择:调用,如图:

 B.再选择“安全”,把“启动和激活权限”,“访问权限”,“配置权限”都使用“自定义”,然后再逐个编辑权限。
 C.点击“启动和激活权限”后面的编辑,如果在“组或用户名称”中没有Everyone这个用户的,请点添加,然后在“输入对象名称来选择”下面的框中加入Everyone,然后点确定.然后给Everyone这个用户赋权限,如图:

一般执行到该步骤就OK了,不需要执行下面步骤

其它几个类似,“访问权限”如图:

  D.最后选择“标识”页签,选择“启动用户”

以上所提3个方案,通常只需要做1和2就可以了,设置完2,问题3通常也就解决啦,实在不行的话,再交叉测试吧!

原文地址:https://www.cnblogs.com/yipu/p/2794602.html