我有一个功能,我在应用程序的解决方案中的一个文件夹中写一个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);
}
请告诉我可能出现的问题?
答案 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?