【发布时间】:2013-08-27 11:19:08
【问题描述】:
我正在使用 Microsoft Office Excel Interop 在 ASP.NET C# 中创建一个 excel 文件。当我在 Visual Studio 2010 中运行应用程序时,一切都成功了。我已经在我自己的 IIS 服务器上发布了我的 Web 应用程序,没关系。但是当我在 Windows Server 2008 中发布应用程序时,就检测到了问题。 我在网上找了很多,我做了以下,但问题仍然没有解决:
-
我已将 Application Pool Identity 设置为 LocalSystem。在运行 -> mmc -32 -> 组件服务 -> 我的电脑 -> DCOM 配置 -> Microsoft Excel 应用程序 -> 右键单击 -> 属性窗口:在 Identity 选项卡中,我检查了所有单选此窗口中的按钮。
-
我已将 Application Pool Identity 设置为 NetworkService,并再次检查了所有以前的单选按钮。
-
在运行->mmc -32 -> 组件服务 -> 我的电脑 -> DCOM 配置 -> Microsoft Excel 应用程序 -> 右键单击 -> 属性窗口:在 安全 选项卡中:我给了本地启动和本地激活,适用于INTERACTIVE、NETWORK SERVICE、IIS_IUSRS用户。
这是我使用的代码Interop Excel:
Excel.Application xlApp = new Excel.Application(); object misValue = System.Reflection.Missing.Value; Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(misValue); Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); Workbook.SaveAs(Server.MapPath("DownloadFolder\\" + fileName + "_siyahi.xls"));
【问题讨论】:
-
那里有几个地方可能会在 Web 应用程序中引发错误。哪一行给出了异常,你可以发布异常吗?另外,您是否检查过运行应用程序的帐户是否具有写入文件夹/文件的适当文件权限?
-
我对 iis_iusrs、myCmputer\\users 用户拥有完全控制权限来写入文件夹。当我将 NetworkService 身份设置为应用程序池时,会出现以下错误“Microsoft Excel 无法打开或保存更多文档,因为没有足够的可用内存或磁盘空间”。
-
您可能想阅读this article,了解有关 Interop 和 ASP.NET 的问题。引用:“微软目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定Office 在此环境中运行时出现的行为和/或死锁。”
标签: c# asp.net excel office-interop