我试图下载文件。 (它以前工作过)但是现在它开始失败了。
这是一个由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:。
谢谢
答案 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