Как создать пользователя для пула приложений с повышенными привилегиями в Azure? - PullRequest
0 голосов
/ 15 мая 2018

Я хочу, чтобы мое веб-приложение mvc могло создавать каталоги, и для этого было предложено создать нового пользователя в моем пуле приложений с повышенными привилегиями. Мое веб-приложение размещено на 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("");
}

Это не работает, но я также не получаю сообщение об ошибке. Из обсуждений, которые я провел здесь в стеке, было высказано предположение, что само приложение не имеет разрешений для создания каталога. Это имеет смысл, так как я могу создать требуемого пользователя и разрешения?

1 Ответ

0 голосов
/ 15 мая 2018

Если вы запускаете веб-приложение в Azure Web App, ответ очень прост: вы не можете .

Причина этого двоякая:

  1. Вы работаете в песочнице, и они не хотят давать кому-либо повышенные привилегии
  2. Хранение информации на локальном диске не рекомендуется, поскольку вы можете потерять эту информацию в любой момент времени (например, когда ваше приложение перезагружается).

Вы должны записать данные, которые должны быть сохранены в Хранилище Azure .

Взято из среды выполнения Azure описание на GitHub:

Веб-приложения Azure работают в изолированной среде, которая позволяет нескольким сайтам безопасно сосуществовать на одном компьютере.

В большинстве случаев сайты могут делать большинство вещей, которые обычно должны делать «нормальные» сайты. Но в некоторых случаях вы можете столкнуться с чем-то, что не работает из-за ограничений песочницы. Подробнее см. Песочница для веб-приложений Azure .

Самая важная / важная информация из этой последней статьи находится здесь (я ее немного урезал):

Доступ к домашнему каталогу (d: \ home)
Каждое веб-приложение Azure имеет домашний каталог, который хранится / поддерживается хранилищем Azure. Эта сетевая папка где приложения хранят свой контент. Этот каталог доступен для песочница с доступом для чтения / записи.

Доступ к локальному каталогу (d: \ local)
Каждое веб-приложение Azure имеет локальный каталог, который является временным и удаляется, когда приложение не дольше работает на ВМ. Этот каталог является местом для временного хранения данные для приложения.

Доступ к системному диску
Приложения могут считывать системный диск как управляемый ACL на диске. Приложения не могут писать ни расположение на системном диске, как реализовано в песочнице (т.е. даже если списки управления доступом разрешают запись в папку на системном диске, песочница будет ограничивать это).

...