我希望我的mvc Web应用程序能够创建目录并实现此目的,并建议在我的应用程序池中使用提升的权限创建新用户。我的Web应用程序托管在Azure上,我想知道如何做到这一点,以及它是否是正确的方法。
以下是我的Web应用程序中用于创建目录的代码。
public ActionResult Async_Save(IEnumerable<HttpPostedFileBase> files, int? id)
{
if (files != null)
{
string filepath = "/Content/CarData/";
Directory.CreateDirectory(filepath + id);
foreach (var file in files)
{
var fileName = Path.GetFileName(file.FileName);
var physicalPath = Path.Combine(Server.MapPath(filepath + id), fileName);
file.SaveAs(physicalPath);
}
}
return Content("");
}
它不起作用,但我也没有收到错误消息。从我在堆栈中讨论过的,我们的建议是应用程序本身没有创建目录的权限。这是有道理的,那么我如何创建所需的用户和权限?
答案 0 :(得分:0)
如果您在Azure Web App上运行Web应用程序,答案非常简单:您不能。
原因有两个:
您应该编写要在Azure Storage中保留的数据。
取自GitHub上的Azure runtime environment描述:
Azure Web Apps在沙盒环境中运行,允许多个站点在同一台计算机上安全共存。
在大多数情况下,网站可以执行“正常”网站通常需要执行的大多数操作。但在某些情况下,由于沙箱限制,您可能会遇到无效的问题。有关详细信息,请参阅Azure Web-App Sandbox。
上一篇文章中最重要/最相关的信息就在这里(我把它修剪了一下):
主目录访问(d:\ home)
每个Azure Web App都有一个由Azure Storage存储/支持的主目录。这个网络共享就在哪里 应用程序存储其内容。该目录可用于 具有读/写访问权限的沙箱。本地目录访问权限(d:\ local)
每个Azure Web App都有一个临时的本地目录,当应用程序为no时将被删除 在VM上运行时间更长。该目录是临时存储的地方 应用程序的数据。系统驱动器访问
应用程序可以读取驱动器上的ACL控制的系统驱动器。 应用程序无法写入任何内容 在沙箱中实现的系统驱动器上的位置(即偶数 如果ACL允许写入系统驱动器上的某个位置,则为沙箱 会限制它。)