【问题标题】:asp.net folder accessasp.net 文件夹访问
【发布时间】:2013-02-04 10:13:00
【问题描述】:

我正在尝试在新创建的文件夹中读取刚刚上传到服务器的文件(文件夹名称是会话 ID)

异常详细信息:System.UnauthorizedAccessException:访问 路径 '...\UploadFiles\jeiqw1qxya33e3r00idwlceo' 被拒绝。

我不确定要授予哪个用户访问权限,在网上查看它说要添加运行应用程序池的身份,对我来说,这对我来说是 ApplicationPoolIdentity...但我找不到这个用户添加到文件夹权限。所以我添加了“每个人”并给予完全控制......只是为了试验一下,我仍然得到上面的错误。

这与我在这里的最后一个问题有关... StreamReader with tab delimited text file

使用 'File.ReadAllLines()' 方法,这是有异常的行。

【问题讨论】:

  • 我会检查当前分配给该文件夹的权限。还要确保文件夹继承权限
  • 确保实际文件的权限设置为所有人:完全控制(实验)。

标签: c# asp.net file-permissions


【解决方案1】:

授予对动态创建的文件夹的读取权限是不切实际的 - 正如您所说的文件夹名称是会话 ID。

但是,您可以像这样将文件流式传输回给用户。

HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.Charset = "utf-8";
response.ContentType = "text/xls";
response.AddHeader("content-disposition", 
   string.Format("attachment; filename={0}", fileName));
response.BinaryWrite(File.ReadAllBytes(filePath));
response.End();

【讨论】:

    【解决方案2】:

    如果您运行的是 IIS 7.5 或更高版本,则与您的应用程序池一起运行的用户通常是“IIS APPpool{POOL NAME}”,其中 {POOL NAME} 是池/站点的名称。

    如果您使用带有应用程序池标识的 IIS 7,我认为它仍然是您的网站运行的“网络服务”。

    顺便说一句,您可以直接看到 yoru apppool(w3wp.exe) 在任务管理器/进程资源管理器等工具中运行的用户。

    【讨论】:

      【解决方案3】:

      找出应用程序在哪个特定帐户下运行的另一种方法是在代码中:System.Security.Principal.WindowsIdentity.GetCurrent().Name

      但是,如果您已授予该帐户或所有人完全控制权,但您仍然收到拒绝访问错误,那么新上传的文件是否可能被锁定?您是否将上传的文件保存到虚拟目录内的位置?有时,如果文件保存到可浏览的位置,IIS 会临时锁定文件。病毒扫描程序有时也会导致文件锁定。

      【讨论】:

        【解决方案4】:

        我要感谢大家的回复。

        当我今天早上用新的眼光看代码时,我注意到我的代码中有一个错误......

        我有...

        var records = File.ReadAllLines(Server.MapPath("~/UploadFiles/") + Session.SessionID).ToList();
        

        它指向文件夹,而不是目标文件。

        我改成……

        var records = File.ReadAllLines(Server.MapPath("~/UploadFiles/") + Session.SessionID + "/ediFile.txt").ToList();
        

        现在可以了!难怪这让我感到困惑,因为权限设置毕竟是正确的! :)

        【讨论】:

          猜你喜欢
          • 2021-11-08
          • 2010-12-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-08
          • 2011-04-16
          相关资源
          最近更新 更多