Asp.Net HttpPostedFile.SaveAs失败:访问被拒绝

时间:2019-08-21 09:57:34

标签: asp.net access-denied httppostedfile

在我的ASP.NET Web应用程序中,我尝试使用JQuery Ajax上传文件,该文件依次调用.ashx handler。文件应保存到使用以下项目在项目树下创建的pdf文件夹中:

  

添加->新文件夹

在部署和测试后,SaveAs失败,并显示access is denied错误。

Internet上的所有解决方案均建议对该文件夹进行编辑权限。因此,在服务器上,我授予Network Service用户对pdf文件夹的完全控制权,然后上载成功了……但是问题是随后进行的所有网络部署应用程序只是删除了服务器上的那些权限,问题当然会返回。

我完全控制了Network Service文件夹中的Inetpub,以解决该问题,从而解决了该问题。但是这样做可以接受吗?

感觉不对,所以,请问您提出什么解决问题的建议,而不是我的解决方法?

处理程序中的代码如下:

public void ProcessRequest(HttpContext context)
{
   try
   {
       if (context.Request.Files.Count > 0)
       {
           HttpPostedFile postedFile = context.Request.Files[0];

           string filePath = context.Server.MapPath("~/pdf");

           string fileName = Path.GetFileName(postedFile.FileName);
           postedFile.SaveAs( Path.Combine(filePath , fileName) );

           string json = new JavaScriptSerializer().Serialize(
                     new { name = fileName });

           context.Response.StatusCode = (int)HttpStatusCode.OK;
           context.Response.ContentType = "text/json";
           context.Response.Write(json);
           context.Response.End();
        }
   }
   catch (Exception e)
   {
            context.Response.ContentType = "text";
            context.Response.Write(e.Message);
            context.Response.End();
    }
 }

预先感谢

1 个答案:

答案 0 :(得分:0)

您可以尝试完全控制该文件夹IIS_USR的权限吗?它将起作用。我们必须提供IIS用户而不是网络服务帐户。