【问题标题】:How do I create a user for my application pool with elevated privileges in Azure?如何在 Azure 中为我的应用程序池创建具有提升权限的用户?
【发布时间】:2018-05-15 09:20:01
【问题描述】:

我希望我的 mvc Web 应用程序能够创建目录,为了实现这一点,有人建议在我的应用程序池中创建一个具有提升权限的新用户。我的 Web 应用程序托管在 Azure 上,我想知道如何做到这一点,以及这是否是正确的方法。

这是我的网络应用程序中用于创建目录的代码。

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("");
}

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

【问题讨论】:

  • 你的前提可能有点缺陷。为什么要将文件存储在 Web 服务器本身上?实际需要这样做的情况很少见(通常,您应该使用存储帐户)

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


【解决方案1】:

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

原因有两个:

  1. 您在沙盒中运行,他们不想授予任何人提升的权限
  2. 不鼓励将信息存储在本地磁盘上,因为您可能会在任何时候丢失此信息(例如,当您的应用回收时)。

您应该将要持久化的数据写入Azure Storage

取自 GitHub 上的Azure runtime environment 描述:

Azure Web 应用在沙盒环境中运行,允许多个站点安全地共存于同一台计算机上。

在大多数情况下,网站能够完成“普通”网站通常需要做的大部分事情。但是在某些情况下,您可能会遇到由于沙盒限制而无法正常工作的东西。详情请见Azure Web-App Sandbox

上一篇文章中最重要/最相关的信息在这里(我把它删减了一点):

主目录访问 (d:\home)
每个 Azure Web 应用程序都有一个由 Azure 存储存储/支持的主目录。这个网络共享在哪里 应用程序存储其内容。该目录可用于 具有读/写访问权限的沙盒。

本地目录访问 (d:\local)
每个 Azure Web 应用程序都有一个本地目录,该目录是临时的,当应用程序不存在时会被删除 在 VM 上运行时间更长。这个目录是临时存放的地方 应用程序的数据。

系统驱动器访问权限
应用程序可以根据驱动器上的 ACL 控制读取系统驱动器。 应用程序不能写入任何 系统驱动器上的位置,在沙盒中实现(即,甚至 如果 ACL 允许写入系统驱动器上的某个位置,则沙箱 会限制它)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多