Загрузка файлов работает в Visual Studio IIS Express, но не на сервере - PullRequest
0 голосов
/ 28 января 2020

У меня есть вид на веб-приложение, где пользователь загружает файл для предварительного заполнения формы. Представление, в котором расположена форма, имеет два объявления Html.BeginForm, одно для загрузки файла и одно для отправки заполненной формы. Все работает нормально, когда я отлаживаю локально с помощью IIS Express, но при развертывании на моем сервере разработки файл не загружается. Я надеюсь, что кто-то сможет дать некоторое представление о том, почему это происходит.

Выдержка загрузки файла из представления:

@using (Html.BeginForm("Populate", "ScProject", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
   //file upload and submit button
}

Выписка загрузки файла с контроллера:

[HttpPost]
public ActionResult Populate(HttpPostedFileBase file)
{
   if (file != null && file.ContentLength > 0)
      try
      {
         string path = Path.Combine(Server.MapPath("~/Content"), System.IO.Path.GetFileName(file.FileName));
         file.SaveAs(path);
         return RedirectToAction("Create", new { file = Path.GetFileName(file.FileName) });
      }
      catch (Exception ex)
      {
         ...omitted error logging code...
         return RedirectToAction("Create");
      }
   else
   {
      ...omitted error logging code...
      return RedirectToAction("Create");
   }
}

RedirectToAction("Create", new { file = Path.GetFileName(file.FileName) }); перезагружает представление и заполняет форму, используя загруженный файл. Я попытался выполнить это действие, используя предварительно загруженный файл, введя URL: ../ScProject/Create?file=upload.pptx, который снова отлично работает на IIS Express, но не работает на сервере разработки. Если кто-то может предложить какое-либо понимание, это будет с благодарностью.

Ответы [ 2 ]

0 голосов
/ 29 января 2020

Если код сохраняет файл при запуске в IIS Express, но не в IIS, то его основная проблема с идентификатором пула приложений не имеет прав доступа к каталогу, в котором вы пытаетесь сохранить файл.

0 голосов
/ 29 января 2020

Вот контрольный список:

  1. Используете ли вы Windows аутентификацию на неисправном сервере?
  2. Запускаете ли вы приложение, извлекаемое под учетной записью службы или ApplicationPoolIdentity?
  3. Разрешает ли ваша целевая папка безопасности доступ на чтение / право к этой учетной записи?
...