下载文件抛出 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:/ 上的流意外结束