无法在asp.net中写入和读取文件

时间:2013-05-31 05:34:14

标签: asp.net excel

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

请参阅以下代码。

 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);

            }

请告诉我可能出现的问题?

1 个答案:

答案 0 :(得分:0)

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

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

更新1 : 还要确保正确使用MapPath。您正在使用.。也许~就是你想要的。以下是差异的精彩摘要:Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\"), Server.MapPath("/"). What is the difference?

enter image description here