使用 IIS Express 和 Visual Studio 调试项目时出现持久访问被拒绝消息

persistent access denied message when debugging project using IIS Express and Visual Studio

我正在 Visual Studio 2019 年调试我的 NetCore 3.1 项目。我在 Windows 10 上使用内置的 IIS Express 在本地执行此操作。

我正在尝试将文件保存到我的 D: 驱动器。

我的 Visual Studio 项目使用 IIS Express 在调试模式下尝试将文件复制到本地文件系统时出现以下错误:

{"Access to the path 'D:\biologyMedia\eb4cf4c2-6434-4cfe-9fa8-0033bc9b1a08' is denied."}

错误发生在try块中的以下方法中:

public async Task<bool> CopyFile(IFormFile examFile, Guid diseaseId)
{
    string path = @"D:\biologyMedia\" + diseaseId + @"\";

    if (!Directory.Exists(path))
    {
        DirectoryInfo di = Directory.CreateDirectory(path);
    }

    try
    {
        using (var fileStream = new FileStream(path, FileMode.Create))
        {
            await examFile.CopyToAsync(fileStream);
        }

    } catch (Exception e)
    {
        var error = e.InnerException;
        return false;
    }

    return true;
}

根据之前的回答,我尝试了以下方法:

我不确定我还能尝试什么。

以前有人解决过这个问题吗?

谢谢!

我过去曾使用 IIS 进行过类似的冒险,但我从未使用过 IIS Express。在我的例子中,我必须授予应用程序池用户对该文件夹的访问权限。

参见:https://support.pkware.com/home/smar/latest/sem-knowledge-base/kb-granting-folder-permissions-to-iis-application-pools

我建议您检查 applicationhost.config 以检查 IIS Express 中的应用程序池。并确保IIS Express的应用程序池对文件夹D:\biologyMedia.

有完全的控制权

希望对您有所帮助。

斯凯,抱歉,难道是你在

using (var fileStream = new FileStream(path, FileMode.Create))
        {
            await examFile.CopyToAsync(fileStream);
        }

实际上是文件夹 @"D:\biologyMedia\" + diseaseId + @"\"; 因此不是文件名?

所以您是要将文件复制到文件夹中而不是复制到文件夹中?

我建议您将文件保存到应用程序根目录下的文件夹中。虽然我无法解释您遇到的问题,但您最好以不访问应用程序根目录之外的文件夹的方式编写代码。