繁体   English   中英

ASP.Net“访问路径''被拒绝。”文件上传控制在Web服务器(IIS7)中不起作用

[英]ASP.Net “Access to the path '' is denied.”File Upload Control not Working in Web Server (IIS7)

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

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

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

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

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

IIS7 中的网站权限

IIS7 中的网站权限

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

谢谢大家。

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

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

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

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

我发现这两个文件名之间略有不同,这导致了错误

  • this_file1.ppf
  • 这个文件1.pdf

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

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

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

固定我的:

  1. 文件properties
  2. security选项卡下单击add
  3. 添加 iis 用户,在我的情况下为IIS_IUSRS ,然后单击Check Names
  4. 单击OK并从权限类别grant full-access权限

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

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

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

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);
    }
}
  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM