我在WebForm中写了如下代码:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As New Excel.Application
End Sub
运行时,单击按钮,出现如下错误:
“/WebReport1”应用程序中的服务器错误。
--------------------------------------------------------------------------------
拒绝访问。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.UnauthorizedAccessException: 拒绝访问。
ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}/ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。
若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。
解决方法:
配置Dcom中Excel的权限,把Asp.net用户加进去
1. 运行Dcomcnfg.exe
2. 在列表中选择microsoft excel 文档
3. 点击属性
4. 选择”安全性”
5. 选择”使用自定义访问权限”和”使用自定义启动权限”
6. 分别编辑权限,添加ASPNET,VS Developers,Debugger User
选择”身份标识”,再选择”交互式用户”即可
ASP.NET 在域控制器上使用默认 ASPNET 帐户不能正常运行
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;315158