asp.net操作Excel拒绝访问的解决
TlbImp.exe在C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin
我要在ASP.net中操作EXCEL,具体作法如下:
tlbimp excel.exe 生成excel.dll并把excel.dll拷到wwwroot\bin下,给了IIS所在目录的强执行权限。且excel.dll能写入。
部分代码如下:
Excel.ApplicationClass test=new Excel.ApplicationClass();
test.Visible=true;
Excel.Workbooks wbs=test.Workbooks;
Excel.Workbook wb=wbs.Add("a.xls");
Excel.Sheets ses=wb.Worksheets;
Excel.Worksheet se=(Excel.Worksheet)ses.get_Item("sheet3");
Excel.Range ra1=se.get_Range("B2","B2");
string myvalue=ra1.Value2;
运行时出现如下错误:
拒绝访问。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.UnauthorizedAccessException: 拒绝访问。
未授权此 ASP.NET 进程访问所请求的资源。出于安全原因,默认的 ASP.NET 进程标识为“{machinename}\ASPNET”,它只具有有限的特权。请考虑授予该 ASP.NET 进程标识访问此资源的权限。
若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”以添加“{machinename}\ASPNET”用户。突出显示此 ASP.NET 帐户,在“允许”列中选中“写”框。
1.找到对应的文件夹,在里面添加上asp/net这个用户.
2.资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡,给你的wwwroot目录的ASP。NET用户授予写权限。
3.增加aspnet用户读写权限,或编辑WINNT\Microsoft.NET\Framework\v1.0.3705\CONFIG下的machine.config文件,将processModel节中的username的值设为SYSTEM
4.把aspnet_wp帐号设置对excel.dll有读写权限。
5.解决方法:
作Excel的时候,可能会发生Excel进程被锁定,无法退出,解决方法是在保存完并关闭myBook(工作簿)后,别关闭Excel进程(myApp.Quit();)。这样的结果是服务器上始终有一个Excel的进程。可能会出现asp_net用户操作Excel的权限不够,配置Dcom。运行Dcomcnfg.exe,找到Excel应用程序,配置其属性,身份验证级别选"无",身份标识选"交互式用户",安全性页面,启动和访问均给everyone。注意:查看当前进程中是否有Winword进程存在,如果有且不能被结束,那么重启动计算机。再次运行你的代码即OK。这样以后就不会出现权限不够的情况了。
6.若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击 “添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。设置权限的方法是在Windows的运行框中输入dcomcnfg,打开Com管理。在EXCEL应用程序的安全中,分别添加ASPNET、IUSER、IWAM等用户的访问、运行和配置权限。
我要在ASP.net中操作EXCEL,具体作法如下:
tlbimp excel.exe 生成excel.dll并把excel.dll拷到wwwroot\bin下,给了IIS所在目录的强执行权限。且excel.dll能写入。
部分代码如下:
Excel.ApplicationClass test=new Excel.ApplicationClass();
test.Visible=true;
Excel.Workbooks wbs=test.Workbooks;
Excel.Workbook wb=wbs.Add("a.xls");
Excel.Sheets ses=wb.Worksheets;
Excel.Worksheet se=(Excel.Worksheet)ses.get_Item("sheet3");
Excel.Range ra1=se.get_Range("B2","B2");
string myvalue=ra1.Value2;
运行时出现如下错误:
拒绝访问。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.UnauthorizedAccessException: 拒绝访问。
未授权此 ASP.NET 进程访问所请求的资源。出于安全原因,默认的 ASP.NET 进程标识为“{machinename}\ASPNET”,它只具有有限的特权。请考虑授予该 ASP.NET 进程标识访问此资源的权限。
若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”以添加“{machinename}\ASPNET”用户。突出显示此 ASP.NET 帐户,在“允许”列中选中“写”框。
1.找到对应的文件夹,在里面添加上asp/net这个用户.
2.资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡,给你的wwwroot目录的ASP。NET用户授予写权限。
3.增加aspnet用户读写权限,或编辑WINNT\Microsoft.NET\Framework\v1.0.3705\CONFIG下的machine.config文件,将processModel节中的username的值设为SYSTEM
4.把aspnet_wp帐号设置对excel.dll有读写权限。
5.解决方法:
作Excel的时候,可能会发生Excel进程被锁定,无法退出,解决方法是在保存完并关闭myBook(工作簿)后,别关闭Excel进程(myApp.Quit();)。这样的结果是服务器上始终有一个Excel的进程。可能会出现asp_net用户操作Excel的权限不够,配置Dcom。运行Dcomcnfg.exe,找到Excel应用程序,配置其属性,身份验证级别选"无",身份标识选"交互式用户",安全性页面,启动和访问均给everyone。注意:查看当前进程中是否有Winword进程存在,如果有且不能被结束,那么重启动计算机。再次运行你的代码即OK。这样以后就不会出现权限不够的情况了。
6.若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击 “添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。设置权限的方法是在Windows的运行框中输入dcomcnfg,打开Com管理。在EXCEL应用程序的安全中,分别添加ASPNET、IUSER、IWAM等用户的访问、运行和配置权限。