下载文件抛出 UnauthorizedAccessException net core 2

Posted

技术标签:

【中文标题】下载文件抛出 UnauthorizedAccessException net core 2【英文标题】:Downloading a file throws UnauthorizedAccessException net core 2 【发布时间】:2018-10-24 16:39:18 【问题描述】:

我正在尝试下载文件。 (它以前可以工作)但现在它开始失败了。

这是一个由 web api net core 2 项目支持的 .net core 2 web 项目。它抛出以下错误消息。

错误。处理您的请求时发生错误。请求编号: 0HLDPTBLNENOG:0000000A

开发模式切换到开发环境会显示更多 有关所发生错误的详细信息。

不应在部署中启用开发环境 应用程序,因为它可能会导致敏感信息 向最终用户显示的异常。对于本地调试, 开发环境可以通过设置启用 ASPNETCORE_ENVIRONMENT 环境变量到开发,和 重新启动应用程序。

首先,我不知道怎么开启开发模式,我什至试过用这个命令改变环境变量

setx ASPNETCORE_ENVIRONMENT "开发"

但没用。

无论如何,我尝试首先记录该过程。我在 webapi 中有一种方法可以在存储库中找到 de 文件并将文件位置返回给 web 控制器。根据我的日志,它没有抛出异常,一切都按计划进行。

在 web 控制器中,到目前为止一切正常

return File(new FileStream(location, FileMode.Open), "application/x-msdownload", filename.doc);

它在哪里抛出以下异常(这是异常消息中提到的第 94 行)。

:System.UnauthorizedAccessException: Access to the path 'I:\Repository\Filename.doc' is denied.
at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at AbAWeb.Controllers.DocumentController.Download(String docId) in C:\SOME FOLDERS\Controllers\DocumentController.cs:line 94

所以我认为它与权限有关。

我添加了IUSR、IIS_IUSRS、NETWORK SERVICE,我什至尝试了Everyone,它仍然抛出同样的异常。

有些帖子说我必须添加 IIS Apppool 用户,但我在检查名称对话框中找不到它们。

文件位于硬盘I:网站位于C:。

谢谢

【问题讨论】:

【参考方案1】:

我必须将 IIS_IUSRS 添加到应用程序文件夹才能解决此问题。授予写入和读取权限,因此上传和下载都可以工作。

【讨论】:

【参考方案2】:

根据https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities,您应该在 cmd 中运行以下命令:

ICACLS <Folder Name> /grant "IIS AppPool\DefaultAppPool:F" /t

【讨论】:

以上是关于下载文件抛出 UnauthorizedAccessException net core 2的主要内容,如果未能解决你的问题,请参考以下文章

下载文件抛出 UnauthorizedAccessException net core 2

抛出 java.io.IOException: 当我尝试从服务器下载 txt 文件时,http:/ 上的流意外结束

(我是新手)web网页下载,在创建输入流时抛出异常

Spring Security - 401未经授权的访问

HSQLDB 在检查点期间在 db.script.new 文件上抛出 Asset failed 异常和文件 io 错误

InfluxDB 使用生成的令牌报告“未经授权的访问”