您的位置:首页 > 编程语言 > C#

C#导入Excel报错问题3。

2012-05-24 21:35 183 查看
DCOM配置右击无“属”性问题的解决、设定ASP.NET Web应用程序对COM组件的访问权限
2010-09-27 17:31
1)

在控制台根目录-》组件服务-》计算机-》我的电脑上,就是“我的电脑”的图标变了,多了个红色的标志。在“DCOM配置”里也无法查看OPC服务器COM组件的属性。
这个问题是由于没有启动Distributed Transaction Coodinator服务导致的,请您直接到“计算机管理”-》“服务和应用程序”里启动这个服务。
假如不能启动,请您先卸载这个服务,方法是运行
msDTC -Uninstall,然后在注册这个服务msDTC
-install,最后在启用这个服务,最好改成“自动”。
然后启用DCOMcnfg,“我的电脑”图标改变成正常的图标了,并且可以在“DCOM配置”里查看和修改OPC服务器的属性了。

2)

ASP.NET Web应用程序中,在服务器端打开一个Microsoft Excel文档,并对其操作,需要访问Microsoft Excel应用程序COM组件。对项目添加引用“Microsoft Office 10.0”,输入相应代码后编译成功,运行时ASP.NET框架提示错误。

相关代码: Excel.ApplicationClass app; app = new Excel.ApplicationClass();// 打开工作簿进行数据操作 app.Quit();

错误信息: “/manager”应用程序中的服务器错误。 -------------------------------------------------------------------------------- 拒绝访问。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.UnauthorizedAccessException: 拒绝访问。 未授权此 ASP.NET 进程访问所请求的资源。出于安全原因,默认的 ASP.NET 进程标识为“{machinename}ASPNET”,它只具有有限的特权。请考虑授予该 ASP.NET 进程标识访问此资源的权限。

若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”以添加“{machinename}ASPNET”用户。突出显示此 ASP.NET 帐户,在“允许”列中选中“写”框。

分析原因:默认情况下,ASP.NET应用程序依托的进程aspnet_wp将以“ASPNET”账户(此账户属于系统的Users用户组,其访问权限比较低)。

首先考虑运行过程中,aspnet_wp进程对其可能访问的文件系统资源是否拥有足够的权限。 但是,Web应用程序、类库以及Office运行时文件所存放的驱动器文件系统格式都是FAT32,排除了因NTFS文件系统的安全设置所引起的权限限制。 其次考虑到,系统的COM组件安全设定也能对相应账号的访问权限产生影响。

解决方法:

打开组件服务管理程序(“控制面板”->“管理工具”->“组件服务”),在“组件服务”->“计算机”->“我的电脑”->“DCOM配置”中找到“Microsoft Excel 应用程序”。
右击此节点,选择“属性”,选择“安全性”页,在“启动权限”和“访问权限”中分别选择“自定义”并点击“编辑”按钮,在“启动权限”和“访问权限”对话框内添加系统ASPNET账户(“<机器名>ASPNET”),打开“启动”和“访问”的允许权限,确认并关闭对话框。

问题反思:系统的安全设定不仅仅只有文件资源,组件的安全性设置也相当重要。 Windows提供了“组件服务”管理程序进行对COM、DCOM、COM+组件的设置。 对.NET程序集的安全配置,安装过.NET框架的系统可以通过“管理工具”内的“Microsoft .NET Framework Configuration”和“Microsoft .NET Framework Wizard”进行。

检索COM 类工厂中CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败

Asp.Net里面调用Microsoft Excel Application DCOM 组件出错最终解决方法:

1: 在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"

2: 依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置"

3: 在"DCOM配置"中找到"Microsoft Excel 应用程序"(Microsoft Excel Application),在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应用程序属性"对话框

4: 点击"标识"标签,选择"交互式用户"

5: 点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加

一个"ASP.net"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.

6: 依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"ASP.net"、 (EveryOne 或者NETWORK SERVICE )用户,然后赋予"本地访问"权限

7:点击“位置” ,选中 在数据所在的计算机上运行程序和 在此计算机上运行程序

这样,我们便配置好了相应的Excel的DCOM权限.

注意:这是在winxp上配置的,在2003上,ASP.net用户改为NETWORK SERVICE用户。

重新启动IIS。即可解决问题

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: