现在的位置: 首页 > 综合 > 正文

设定ASP.NET Web应用程序对COM组件的访问权限

2012年07月15日 ⁄ 综合 ⁄ 共 1972字 ⁄ 字号 评论关闭

问题来源:

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

相关代码:

Excel.ApplicationClass app;

app = new Excel.ApplicationClass();

// 打开工作簿进行数据操作

app.Quit();

错误信息:

{color3}“/manager”应用程序中的服务器错误。

--------------------------------------------------------------------------------

拒绝访问。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.UnauthorizedAccessException: 拒绝访问。

未授权此 ASP.NET 进程访问所请求的资源。出于安全原因,默认的 ASP.NET 进程标识为“{machinename}ASPNET”,它只具有有限的特权。请考虑授予该 ASP.NET 进程标识访问此资源的权限。

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

{/color}

分析原因:

默认情况下,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。即可解决问题

 

抱歉!评论已关闭.