【问题标题】:File upload working in Visual Studio IIS Express but not on server文件上传在 Visual Studio IIS Express 中工作,但不在服务器上
【发布时间】:2020-05-14 07:19:48
【问题描述】:

我有一个 Web 应用程序视图,其中用户上传文件以预填写表单。表单所在的视图有两个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 上运行良好,但在开发服务器上失败。如果有人能提供任何见解,将不胜感激。

【问题讨论】:

  • 当您说失败时,您是否看到任何错误或只是没有在服务器上保存文件?

标签: c# asp.net-mvc visual-studio iis iis-express


【解决方案1】:

这是检查清单:

  1. 您是否在故障服务器上使用 Windows 身份验证?
  2. 您是在服务帐户或 ApplicationPoolIdentity 下运行 Application pull 吗?
  3. 您的目标文件夹安全性是否允许对该帐户进行读取/正确访问?

【讨论】:

    【解决方案2】:

    如果代码在 IIS Express 而不是 IIS 中运行时正在保存文件,那么它的主要问题是 App Pool Identity 没有访问您尝试保存文件的目录的权限。

    【讨论】:

      猜你喜欢
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 2021-09-15
      相关资源
      最近更新 更多