1

我有一个功能,我在应用程序解决方案的文件夹中写入一个 excel 文件,然后从那里读取它并允许 save 。它在本地工作正常,但在服务器中部署后无法写入,这会在读取操作时引发错误,提示找不到文件。

请参考下面的代码。

 Microsoft.Office.Interop.Excel.Workbook workbook;
            Microsoft.Office.Interop.Excel.Worksheet NwSheet;

            appExl = new Microsoft.Office.Interop.Excel.Application();
            string serverPath = Server.MapPath(".");

            string filenameToLoad = serverPath + "\\Page1Reports\\" + Session["UserAccentureID"].ToString() + ".xls";


            FileStream fileStream = new FileStream(filenameToLoad, FileMode.Open, FileAccess.ReadWrite, FileShare.Read);
            fileStream.Write(result, 0, result.Length);
            fileStream.Close();



//some more manipulation

            workbook.Save();
            workbook.Close();
            appExl.Quit();



            System.IO.FileInfo file = new System.IO.FileInfo(filenameToLoad);

            if (file.Exists)
            {
                Response.Clear();
                Response.ClearHeaders();
                Response.Charset = "";
                Response.ContentType = "Application/vnd.xls";
                Response.AddHeader("content-disposition", "attachment;filename=Page1SLScoreCardReport.xls");
                Response.AddHeader("Cache-Control", "max-age=0");
                Response.WriteFile(file.FullName);

            }

请让我知道可能是什么问题?

4

1 回答 1

0

检查这个 SO 问题:用户 ASP.NET 在. 它向您显示(基于您的 IIS 版本)它在哪个用户下运行。您很可能必须将文件夹/文件的权限授予 IIS_IUSRS 组(如果您有 IIS 7SP2 或更高版本)。(使用属性/安全对话框)。

还要仔细检查路径......有时最愚蠢的错误是导致问题的错误;)

更新1:还要确保您MapPath正确使用。您正在使用.. 也许~是你想要的。这是对差异的重要总结:Server.MapPath(".")、Server.MapPath("~")、Server.MapPath(@"\")、Server.MapPath("/")。有什么区别?

在此处输入图像描述

于 2013-05-31T07:04:10.550 回答