发布asp.net应用程序后,其中导入、导出excel报错的解决方案
2011-08-26 01:35
344 查看
消息: Sys.WebForms.PageRequestManagerServerErrorException: Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 拒绝访问。 (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).
在asp.net程序中用到了导入、导出excel 在调试的时候没有问题,能够正常导入。但在发布到IIS后出现以上错误。折磨的朕好是辛苦,有网友提出了如下解决办法:
第一种:(可以实现)
在服务器上点击开始—运行—输入:Dcomcnfg然后回车,系统将弹出分布式COM配置属性窗体。
在“应用程序”页里面选择“Microsoft Excel 应用程序”。点击“属性”按钮,系统将弹出该应用程序的属性窗体。
在“常规”页中的身份验证级别下拉列表中选择“无”。
在“安全性”页中选中“使用自定义访问权限”和“使用自定义启动权限”,然后分别点击访问用户和启动用户对应的“编辑”按钮,在里面添加用户“everyone”。
最后在“身份标示”页里面选中“交互式用户”。
第二种:(可以实现)
在web.config中<system.web>中加入如下配置
<identity impersonate="true" userName="[计算机登录用户名]" password="[密码]"/>。
这个方法朕不推荐,原因如下:
如果登陆用户的密码改变将会报错,而且将登陆密码写在web.config中也是不安全的。
朕的实现方法:
上面两种皆可实现但我还是要说说我的看法:
首先说说为什么会出现这样的错误?
是因为我们访问站点的时候是属于"NETWORK SERVICE"这个用户组访问的,不信可以到“任务管理器”-“进程”中看(w3wp.exe这个进程的用户名)。
w3wp.exe——是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe的进程实例运行。
这个进程用来分配大量的系统资源。这个进程对于系统的稳定和安全具有重要的意义,不能轻易的结束掉这个进程。
w3wp.exe——的启动用户是系统内置安全帐户network service。
w3wp.exe——的正常路径是%windir%\system32\inetsrv,一般在C:\WINDOWS\system32\inetsrv
废话我就不多说了,由于这个“NETWORK SERVICE”这个用户组没有启动和激活、访问Excel的权限所以出现这个错误。既然知道了原因就好办了。
解决方法如下:
和上面第一种方法差不多,唯独的差别就是加入的不是EVERYONE用户组而是NETWORK SERVICE用户组。
不用修改在“常规”页中的身份验证级别下拉列表中的选择 ,“默认”就可以了。注意:在“身份标示”页里面选中“交互式用户”,否则有可能出现错误。
在asp.net程序中用到了导入、导出excel 在调试的时候没有问题,能够正常导入。但在发布到IIS后出现以上错误。折磨的朕好是辛苦,有网友提出了如下解决办法:
第一种:(可以实现)
在服务器上点击开始—运行—输入:Dcomcnfg然后回车,系统将弹出分布式COM配置属性窗体。
在“应用程序”页里面选择“Microsoft Excel 应用程序”。点击“属性”按钮,系统将弹出该应用程序的属性窗体。
在“常规”页中的身份验证级别下拉列表中选择“无”。
在“安全性”页中选中“使用自定义访问权限”和“使用自定义启动权限”,然后分别点击访问用户和启动用户对应的“编辑”按钮,在里面添加用户“everyone”。
最后在“身份标示”页里面选中“交互式用户”。
第二种:(可以实现)
在web.config中<system.web>中加入如下配置
<identity impersonate="true" userName="[计算机登录用户名]" password="[密码]"/>。
这个方法朕不推荐,原因如下:
如果登陆用户的密码改变将会报错,而且将登陆密码写在web.config中也是不安全的。
朕的实现方法:
上面两种皆可实现但我还是要说说我的看法:
首先说说为什么会出现这样的错误?
是因为我们访问站点的时候是属于"NETWORK SERVICE"这个用户组访问的,不信可以到“任务管理器”-“进程”中看(w3wp.exe这个进程的用户名)。
w3wp.exe——是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe的进程实例运行。
这个进程用来分配大量的系统资源。这个进程对于系统的稳定和安全具有重要的意义,不能轻易的结束掉这个进程。
w3wp.exe——的启动用户是系统内置安全帐户network service。
w3wp.exe——的正常路径是%windir%\system32\inetsrv,一般在C:\WINDOWS\system32\inetsrv
废话我就不多说了,由于这个“NETWORK SERVICE”这个用户组没有启动和激活、访问Excel的权限所以出现这个错误。既然知道了原因就好办了。
解决方法如下:
和上面第一种方法差不多,唯独的差别就是加入的不是EVERYONE用户组而是NETWORK SERVICE用户组。
不用修改在“常规”页中的身份验证级别下拉列表中的选择 ,“默认”就可以了。注意:在“身份标示”页里面选中“交互式用户”,否则有可能出现错误。
相关文章推荐
- Asp.net程序中用NPOI生成标准Excel报表,导入导出一应俱全
- Asp.Net页面导入和导出到EXCEL
- Excel导入导出,生成和下载Excel报表、附件等操作--ASP.NET
- Asp.net程序中用NPOI生成标准Excel报表,导入导出一应俱全[转]
- [导入]ASP.NET 2.0中将 GridView 导出到 Excel 文件中
- ExcelHelper(Excel和C#、asp.net导入导出,通用类)(二)
- ASP.NET AJAX UpdatePanel下导出Excel报错解决方案
- asp.net(NPOI)导入导出excel表
- asp.net中Excel导入导出控件 2.0升级版本和1.0版本代码开源
- windows server 2008下 asp.net导出excel,word错误的最终解决方案
- ASP.NET MVC NPOI导入导出Excel
- ExcelHelper(Excel和C#、asp.net导入导出,通用类)(三)
- Asp.net程序中用NPOI生成标准Excel报表,导入导出一应俱全[转]
- ASP.Net MVC利用NPOI导入导出Excel
- 【转】[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
- asp.net(C#)excel导入导出类
- asp.net导出/导入规则的Excel(.xls)文件
- ASP.NET对EXCEL的导入导出
- ASP.NET中导入和导出标准Excel文件(转)
- ExcelHelper(Excel和C#、asp.net导入导出,通用类)(四)