如何在Azure中使用提升的权限为我的应用程序池创建用户?

时间:2018-05-15 09:20:01

标签: c# azure model-view-controller elevated-privileges

我希望我的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("");
}

它不起作用,但我也没有收到错误消息。从我在堆栈中讨论过的,我们的建议是应用程序本身没有创建目录的权限。这是有道理的,那么我如何创建所需的用户和权限?

1 个答案:

答案 0 :(得分:0)

如果您在Azure Web App上运行Web应用程序,答案非常简单:您不能

原因有两个:

  1. 您正在沙盒中运行,并且他们不想给任何人提升权限
  2. 不鼓励在本地磁盘上存储信息,因为您可能会在任何时间点丢失此信息(例如,当您的应用程序回收时)。
  3. 您应该编写要在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允许写入系统驱动器上的某个位置,则为沙箱   会限制它。)