应用程序外外部用户的文件上传问题 - ASP.NET MVC 模拟

问题描述

我有一个要求,我想在其中创建调查表,并且用户可以选择上传文件。该网站是一个 ASP.NET MVC 应用程序。

这些用户只能访问调查表单,而无权访问应用程序中的任何其他页面。要上传到位于应用托管的同一服务器中的共享文件夹的文件

文件夹的访问权限仅适用于特定的 AD 组。上传文件的外部用户不属于该 AD 组。

     [HttpPost]
    public JsonResult Upload()
    {
         string fileUniqueName = string.Empty;

        try
        {
            for (int i = 0; i < Request.Files.Count; i++)
            {
                HttpPostedFileBase file = Request.Files[i];
                string fileName = file.FileName;
                fileUniqueName = string.Format("{0}_{1}_{2}",Path.GetFileNameWithoutExtension(file.FileName),DateTime.Now.ToString("yyyyMMdd_HHmmss_FFF"),Path.GetExtension(file.FileName));
                string tempFileUploadFolderPath = ConfigurationManager.AppSettings["TempFolderPath"];
                Directory.CreateDirectory(tempFileUploadFolderPath);
                string fileFullpath = Path.Combine(tempFileUploadFolderPath,fileUniqueName);
                file.SaveAs(fileFullpath);
            }
        }
        catch(Exception)
        {
            Response.StatusCode = (int)HttpStatusCode.BadRequest;
            return new JsonResult
            {
                Data = ""
            };
        }
        
        return new JsonResult
        {
            Data = fileUniqueName
        };
    }

我在 web.config 中有以下设置

<authentication mode="Windows" />
<identity impersonate="true" />

有人可以指导如何在这种情况下执行文件上传功能吗?我们可以通过模拟做任何事情吗?

解决方法

是的,可以做到。

只需将应用程序池的身份设置为 AD 组中的用户之一,以便应用程序有权将调查存储在共享文件夹中。