下载文件会抛出UnauthorizedAccessException net core 2

时间:2018-05-14 22:59:10

标签: c# iis asp.net-core-2.0 file-permissions

我试图下载文件。 (它以前工作过)但是现在它开始失败了。

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

  

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

     

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

     

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

首先,我不知道如何启用开发模式,我甚至尝试使用此命令更改环境变量

setx ASPNETCORE_ENVIRONMENT" development"

但没有工作。

无论如何,我尝试首先记录该过程。我在webapi中有一个方法,它将de文件定位在存储库中,并将文件位置返回给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 个答案:

答案 0 :(得分:2)

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

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