ASP .net core API 将文件写入文件存储

问题描述 投票:0回答:1

我正在使用面向 .net 7 的 .net core api 项目开发一个文档存储库,并使用最少的 API。作为权宜之计,上传的文件将作为文件保存到本地连接的服务器文件存储中。当我使用从

Path.GetTempPath()
返回的路径(即 c:\users\[user]\AppData\Local\Temp)保存文件时,将文件作为 IFormFile 上传到服务器工作正常,但我无法在该路径下创建任何文件夹或使用任何其他路径。它会抛出“访问被拒绝”或“找不到路径的一部分”错误,所以我假设它是权限。

我尝试过使用共享和 UNC 路径,我尝试过以管理员身份运行 Visual Studio,甚至尝试过对我想要的文件夹设置 IUSR、IIS_IUSERS 和 NETWORK SERVICE 的完全控制。据我所知,Visual Studio 运行的服务器是 Kestrel,并且几乎肯定会在生产环境中托管在该服务器上。在开发应用程序时,如何授予应用程序写入本地附加文件存储文件夹的权限(我需要显示分区),我不想在访问上花费太多精力,因为目标是最终将文件存储在 Blob 存储中,但现在还没有。

c# asp.net-core file-permissions kestrel-http-server minimal-apis
1个回答
0
投票

不要授予对任何文件夹上的 IUSR/IIS_IUSR 的访问权限,始终使用应用程序池标识以获得更好的安全性。请阅读 this 了解有关应用程序池身份的更多信息。

您可以做的是在 wwwroot 文件夹之外创建一个临时文件夹,可以是任何文件夹。这样就无法从浏览器访问它。但请注意,如果有人上传病毒,本地存储上传的文件可能会给您的系统带来巨大的危害。另外,相应地设置您的权限。

© www.soinside.com 2019 - 2024. All rights reserved.