“访问 D:home\site\wwwroot 被拒绝”托管在 Azure 上的 ASP.NET MVC WebApp

时间:2021-03-26 15:01:13

标签: asp.net-mvc azure

我一直在尝试在我的 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文件并在将其发送给用户之前对其进行处理即可。

1 个答案:

答案 0 :(得分:1)

请使用 %HOME% 进行持久文件存储或 %TMP% 进行临时存储 您可以在本地计算机中创建一个 %HOME% 环境变量以进行测试。