簡體   English   中英

下載文件引發 UnauthorizedAccessException net core 2

[英]Downloading a file throws UnauthorizedAccessException net core 2

我正在嘗試下載文件。 (它以前工作過)但現在它開始失敗。

這是一個由 web api net core 2 項目支持的 .net core 2 web 項目。 它拋出以下錯誤消息。

錯誤。 處理您的請求時發生錯誤。 請求 ID:0HLPDTBLNENOG:0000000A

開發模式切換到開發環境將顯示有關發生的錯誤的更多詳細信息。

不應在已部署的應用程序中啟用開發環境,因為這會導致向最終用戶顯示異常的敏感信息。 對於本地調試,可以通過將 ASPNETCORE_ENVIRONMENT 環境變量設置為 Development 並重新啟動應用程序來啟用開發環境。

首先,我不知道如何啟用開發模式,我什至嘗試使用此命令更改環境變量

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:。

謝謝

根據https://docs.microsoft.com/zh-cn/iis/manage/configuring-security/application-pool-identities ,您應該在cmd中運行以下命令:

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

我必須將 IIS_IUSRS 添加到應用程序文件夾才能解決此問題。 授予讀寫訪問權限,因此上傳和下載都可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM