大白鲨博客

欢迎讨论.Net技术、delphi技术、C++等技术(我的QQ号:353079102)

导航

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等用户的访问、运行和配置权限。

posted on 2007-12-26 09:49  大白鲨  阅读(3702)  评论(0编辑  收藏  举报