Microsoft interop.excel dll不允许在IIS上托管站点时创建

时间:2014-03-04 06:57:25

标签: vb.net visual-studio-2010

这是我的进口。

Imports Excel = Microsoft.Office.Interop.Excel
Imports ExcelAutoFormat = Microsoft.Office.Interop.Excel.XlRangeAutoFormat

这是创建导入Excel的对象

Dim xlAppToExport As Excel.Application
Dim xlWorkSheetToExport As Excel.Worksheet

当我从本地执行文件时工作正常并创建excel。

当我将同一个项目托管到IIS并执行时。它会在执行时返回错误。

Dim xlAppToExport As Excel.Application
xlAppToExport = New Excel.Application

由于以下错误,检索CLSID为{00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败:80070005拒绝访问。 (HRESULT异常:0x80070005(E_ACCESSDENIED))。

如果他们中的任何人都知道。帮助我。

2 个答案:

答案 0 :(得分:0)

完全可以预期,在IIS等非交互式服务中运行时,它不起作用。 Microsoft say so themselves

  

Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为Office可能会出现不稳定Office在此环境中运行时的行为和/或死锁。

     

...

     

当前的许可指南阻止Office应用程序在服务器上用于为客户端请求提供服务,除非这些客户端本身具有Office的许可副本。使用服务器端自动化为未经许可的工作站提供Office功能不受最终用户许可协议(EULA)的保护。

     

...

     

除了这些问题之外,当您尝试自动执行Office服务器端时,可能会出现以下常见错误之一:

     

...

     

E_ACCESSDENIED(0x80070005):拒绝访问

请考虑EPPlus

答案 1 :(得分:0)

导入以下参考文献。

Imports System.Reflection
Imports System.Runtime.InteropServices
Imports Excel = Microsoft.Office.Interop.Excel
Imports ExcelAutoFormat = Microsoft.Office.Interop.Excel.XlRangeAutoFormat

这里,这两个导入是新添加的

Imports System.Reflection
Imports System.Runtime.InteropServices

它允许我们远程生成Microsoft Office Interop excel报告。

这对我来说很好。