Microsoft Office Excel无法访问IIS上的文件

时间:2015-06-21 13:41:21

标签: c# asp.net excel web-services iis

我有一个Web服务方法,它在给定的Excel文件中搜索字符串并返回其状态。这在VS项目中工作正常。但是,当我在IIS中公开相同的Web服务时,它抛出错误:我正在使用Windows7机器

System.Runtime.InteropServices.COMException: Microsoft Office Excel cannot access the file 'C:\inetpub\wwwroot\MyFirstWebService\App_Data\Results.xlsx'. There are several possible reasons:

• The file name or path does not exist.
• The file is being used by another program.
• The workbook you are trying to save has the same name as a currently open workbook.


string filePath = Server.MapPath("~") + @"\App_Data\Results.xlsx";
            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Open(filePath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

我检查了filePath C:\inetpub\wwwroot\MyFirstWebService\App_Data\Results.xlsx,没关系。

我也试过几个在线解决方案,如下所示,但尚未确定:

Create directory "C:\Windows\SysWOW64\config\systemprofile\Desktop " (for 64 bit Windows) or 
"C:\Windows\System32\config\systemprofile\Desktop " (for 32 bit Windows)

Set Full control permissions for directory Desktop (for example in Win7 & IIS 7 & DefaultAppPool set permissions for user 
    "IIS AppPool\DefaultAppPool")

为什么它在VS而不是在IIS上工作?我的用户帐户也得到了管理员权限,想知道为什么它不起作用。

由于

2 个答案:

答案 0 :(得分:1)

从IIS上托管的MVC应用程序读取Excel时遇到问题。 对于从IIS访问Excel,有两点很重要。

  1. 必须具有“ C:\ Windows \ SysWOW64 \ config \ systemprofile \ Desktop”。即SysWOW64文件夹中的Desktop文件夹,32位的System32文件夹。
  2. 在“桌面”文件夹中分配对IIS_IUSRS用户的完全访问权限。

有点奇怪,不确定为什么要这样做但是对我有用。

答案 1 :(得分:0)

我遇到了这个问题,无法在任何地方找到解决方案。这里有多个问题在起作用。 IIS应用程序位于64位Windows服务器2008上,但安装的Office版本是32位版本。

本文指出了我正确的方向:

http://blogs.technet.com/b/the_microsoft_excel_support_team_blog/archive/2012/11/12/microsoft-excel-does-not-appear-in-dcom-configuration-snap-in.aspx

但是,我不得不将Dcom Config中的Microsoft Excel应用程序的身份更改为管理员而不是启动用户。