在web.config文件添加一句 <identity impersonate="true"/>以启用模拟身份,因为默认ASPNET这个用户是没有权限访问Excel.ApplicationClass(),当启用模拟身份后所有页面将会使用匿名Internet用户帐户(IUSR_machinename)这个用户名的权限执行.

解决方案 »

  1.   

    开始->运行->"dcomcnfg"->在应用程序列表框中选择“Microsoft Excel 应用程序”->
    “安全性”->选择“使用自定义访问权限”,点击“编辑”按钮
    添加本地“ASPNET”用户,权限为“允许访问”
      

  2.   

    老兄,不对呀,加了后
    运行,显示运行程序(EXCEL.exe)错误,该内存不能为读,有解决之道么?
      

  3.   


    try
    开始->运行->"dcomcnfg"->默认安全机制-编辑默认值
    添加aspnet用户
      

  4.   

    我这个方法包你能用,不能用找我:
    找到machine.config文件,在C:\WINNT\Microsoft.NET\Framework\v1.0.3705\CONFIG下,
    找到processModel标记,将userName="machine"改为:userName="SYSTEM"
    保存后重启机器,再出错你找我!
      

  5.   

    to mudboy() ,我在machine.config中找到procesdmodel标记,userName=Administrator,不用改吧
      

  6.   

    要改成SYSTEM,别的不用改了,不过你可以先试试,你知道这个问题我自个儿熬了好几周才试出来的,其它如在dcom中设置或把ASPNET添加到Administrators里之类的都不管用的。试过你就知道了
      

  7.   

    userName="SYSTEM"
    后 启动
    运行后显示运行程序(EXCEL.exe)错误,0X00000000该内存不能为读,
    确定/取消程序运行
    取消/调试程序
    怎么回事呀?有没有
    解决方法呀?
      

  8.   

    后来,取消dcomcnfg 里面的自定义设置
    再次测试processmodel 
    显示错误如下:
    接口 Excel._Application 的 QueryInterface 失败。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidCastException: 接口 Excel._Application 的 QueryInterface 失败。源错误: 
    行 335: object om=System.Reflection.Missing.Value;
    行 336: myApp=new Excel.ApplicationClass();
    行 337: myApp.Visible =false;
    行 338:
    行 339: