我正在尝试打开并更新IIS服务器上的xls文件,并将其作为下载发送给用户。以下代码在开发IIS express环境下工作正常。但是,当我在IIS服务器上部署它时,服务器似乎挂在Workbooks.open函数上。
// Copy template to the given file
System.IO.File.Copy(Server.MapPath("~") + "\\App_Data\\template.xls", file, true);
// Get current project id
int activeProjectID = Convert.ToInt32(Session["activeProjectID"]);
// Open workbook
oXL = new Microsoft.Office.Interop.Excel.Application();
oXL.Visible = true;
oXL.DisplayAlerts = false;
mWorkBook = oXL.Workbooks.Open(file, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
//Get all the sheets in the workbook
mWorkSheets = mWorkBook.Worksheets;
答案 0 :(得分:1)
使用Office Interop库的服务器端自动化不是受支持的方案,并且要求解决问题。它会导致很多问题,因为:
“Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为在此环境中运行Office时,Office可能会出现不稳定的行为和/或死锁。“
https://support.microsoft.com/en-us/help/257757/considerations-for-server-side-automation-of-office