我一直在尝试在我的 ASP.NET MVC 项目中打开一个 excel 文件(为此我使用了 Syncfusion 库)。 出于某种原因,当我使用 Visual Studio 发布 web 应用程序时,我得到了
"Access to the path 'D:\home\site\wwwroot' is denied."
错误。
文件正确上传到网络服务器(我在浏览器中输入路径就可以下载了)。我研究了 this 问题,但我的 azure webapp 中没有 WEBSITE_RUN_FROM_PACKAGE 设置。我进入 Kudu,打开控制台并运行
icacls "D:\home\site\wwwroot"
给出了这个输出
D:\home\site\wwwroot Everyone:(I)(OI)(CI)(M,DC)
BUILTIN\Administrators:(I)(OI)(CI)(F)
所以,以我对acls的一点了解,好像Everyone对这个文件夹有修改权限。
这意味着我不知道该怎么做。
代码:
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Excel2013;
application.EnablePartialTrustCode = true;
IWorkbook workbook = application.Workbooks.Create(1);
var dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
dir = dir.Replace("file:\\", "");
dir = dir.Replace("\\bin", "");
var dirXlsx = "\\Areas\\Stampe\\Content\\Excel\\RapportoProvaMare(version1).xlsx";
FileStream s = File.OpenRead(dir + dirXlsx);
IWorkbook source = excelEngine.Excel.Workbooks.Open(s);
我认为 Syncfusion 代码与该问题无关,我只是为了完整性而报告它。
有人知道可能是什么问题吗?
编辑:更具体地说,我通过 Visual Studio 发布代码,将 excel 文件放在网站的文件夹中(就像您对图像所做的一样)。我对 dir
变量所做的所有测试都在 Azure 环境中进行了测试(我们有一个重复的测试环境)。我只需要从本地网站文件夹中读取excel文件并在将其发送给用户之前对其进行处理即可。
答案 0 :(得分:1)
请使用 %HOME% 进行持久文件存储或 %TMP% 进行临时存储 您可以在本地计算机中创建一个 %HOME% 环境变量以进行测试。