【问题标题】:ASP.Net "Access to the path '' is denied."File Upload Control not Working in Web Server (IIS7)ASP.Net“访问路径''被拒绝。”文件上传控件在Web服务器(IIS7)中不起作用
【发布时间】:2016-10-24 01:22:54
【问题描述】:

我目前正在开发一个网站应用程序,其功能之一是能够上传和下载文件。所有上传的文件都将存储在外部网络位置。首先是在页面加载时,它将创建一个临时文件夹,所有上传的文件都将存储在那里。然后当他们单击保存按钮时,它将创建一个文件夹,将其永久存储并将所有文件放入该文件夹并自动删除临时文件夹。它在我的本地主机服务器上工作正常,但是当我将它上传并放到网络服务器时,它会抛出一个错误,访问路径“(网络路径)”被拒绝。

ASP.NET 无权访问请求的资源。考虑向 ASP.NET 请求标识授予对资源的访问权限。 ASP.NET 有一个基本进程标识(通常是 IIS 5 上的 {MACHINE}\ASPNET 或 IIS 6 和 IIS 7 上的网络服务,以及 IIS 7.5 上配置的应用程序池标识),如果应用程序不是模拟的,则使用该标识。如果应用程序通过 模拟,则身份将是匿名用户(通常是 IUSR_MACHINENAME)或经过身份验证的请求用户。

要授予 ASP.NET 对文件的访问权限,请在文件资源管理器中右键单击该文件,选择“属性”并选择“安全”选项卡。单击“添加”以添加相应的用户或组。突出显示 ASP.NET 帐户,然后选中所需访问权限的复选框。

我已经研究了将近一个星期的解决方案,它说这是关于许可的问题,但是网上所有的解决方案都不清楚并且对我不起作用。我希望有人可以帮助我逐步说明如何配置权限以允许网络访问或任何可能的工作解决方案。

更新: 这是当前的屏幕截图:

IIS7 中网站的权限

我下载了 ASP.NET 组件,但找不到 ASP.NET 帐户。我有 .net 4.0 应用程序池。我应该授予我上传文件夹的权限吗?请帮帮我。

谢谢大家。

【问题讨论】:

    标签: c# asp.net iis-7


    【解决方案1】:

    这是一个权限问题,您已经有了提示:

    要授予 ASP.NET 对文件的访问权限,请在文件资源管理器中右键单击该文件,选择“属性”并选择“安全”选项卡。单击“添加”以添加相应的用户或组。突出显示 ASP.NET 帐户,然后选中所需访问权限的复选框。

    1. 探索 IIS 管理器。
    2. 展开站点节点并找到您的站点然后右键单击。
    3. 单击浏览,您将被重定向到物理文件路径。
    4. 右键单击文件夹并转到安全选项卡
    5. 点击编辑按钮(会弹出另一个窗口)
    6. 在此窗口中添加 iis 用户通常以 IIS_MACHINENAME 为前缀
    7. 为此用户设置完全权限,一切顺利。

    【讨论】:

    • 我已按照您的说明进行操作,但错误仍然存​​在。我的 Web 服务器由虚拟机运行。我还需要配置什么?谢谢。
    • 并且外部文件夹没有 ASP.NET 帐户。我还需要配置什么?谢谢。
    • @moonlight04 读到这里,找到用户名exactsoftware.com/docs/…
    • 我已经更新了我的问题。感谢您的帮助,我希望您能帮助我解决我的问题。谢谢。
    • 我的 IIS 中已经有 ASP.NET 组件,但仍然没有 ASP.NET 帐户。
    【解决方案2】:

    我在同样的问题上苦苦挣扎,虽然我们做了所有显示的权限更改,但我仍然收到错误。最后,我使用文件上传控件编写了一个小测试页面,当我尝试使用各种文件时,它运行良好。

    我发现这两个文件名之间存在细微差别,导致错误

    • this_file1.ppf
    • thisfile1.pdf

    是的,下划线导致了访问冲突错误,我一生不知道为什么?这也适用于文件名中有空格的文件。我们正在 Windows Server 2012 R2 上运行网络服务器 (IIS7),如果这有影响的话。

    我在控件中没有找到对此的任何引用,尽管它也会在长文件名上失败。

    【讨论】:

    • 只是想指出您在文件名中的小错字,我认为“ppf”应该是“pdf”?(我会为您修复它,但 SO 在 1 上看起来不友好字符编辑)
    【解决方案3】:

    在我的情况下,我只是将所需的文件复制到 c 驱动器中的 wwwroot 文件夹,并更改了物理路径,它解决了我的问题。

    【讨论】:

      【解决方案4】:

      修复了我的问题:

      1. 文件properties
      2. security 选项卡下单击add
      3. 添加 iis 用户,在我的例子中是 IIS_IUSRS,然后单击 Check Names
      4. 点击权限类别中的OKgrant full-access

      如果您找不到IIS_IUSRS,您可以随时前往Security > Add > Advanced > Find Now 查找IIS 用户名。

      我还通过输入当前登录的username 添加了当前登录的用户并授予完全访问权限

      【讨论】:

        【解决方案5】:

        只是一个提示:在我的例子中,以下代码不起作用并发出消息“访问路径 (...) 被拒绝。”

        var Request = HttpContext.Current.Request;
        foreach (string file in Request.Files)
        {    
            var postedFile = Request.Files[file];    
            postedFile.SaveAs(pathToSave);
        }
        

        这个很好用:

        var Request = HttpContext.Current.Request;
        foreach (string file in Request.Files)
        {    
            var postedFile = Request.Files[file];    
            using (var stream = new FileStream(pathToSave, FileMode.Create))
            {
               await postedFile.InputStream.CopyToAsync(stream);
            }
        }
          
        

        【讨论】:

          猜你喜欢
          • 2014-11-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-21
          • 1970-01-01
          • 2013-12-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多