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

Visual studio 使用IIS Express和Visual Studio调试项目时出现持久访问被拒绝的消息,visual-studio,visual-studio-2019,iis-express,Visual Studio,Visual Studio 2019,Iis Express,我正在Visual Studio 2019中调试我的NetCore 3.1项目。我在Windows 10上使用内置的IIS Express在本地执行此操作 我正在尝试将文件保存到我的D:驱动器 在使用IIS Express以调试模式运行Visual Studio项目时,尝试将文件复制到本地文件系统时,出现以下错误: {"Access to the path 'D:\\biologyMedia\\eb4cf4c2-6434-4cfe-9fa8-0033bc9b1a08' is denie

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

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

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

{"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;
}
公共异步任务复制文件(IFormFile examFile,Guid diseaseId)
{
字符串路径=@“D:\biologyMedia\”+diseaseId+@“\”;
如果(!Directory.Exists(path))
{
DirectoryInfo di=Directory.CreateDirectory(路径);
}
尝试
{
使用(var fileStream=newfilestream(路径,FileMode.Create))
{
等待examFile.CopyToAsync(文件流);
}
}捕获(例外e)
{
var error=e.InnerException;
返回false;
}
返回true;
}
根据前面的答案,我尝试了以下方法:

  • 在项目属性中将Windows身份验证设置为enabled
  • 以管理员身份启动Visual Studio
  • 完全控制 D:驱动器到本地服务、网络服务、IUSR、IIS\U用户和 网络和我自己的Windows帐户(它是 管理员)
我不确定我还能尝试什么

以前有人修过吗


谢谢

我过去在IIS上也有过类似的经历,但我从未使用过IIS Express。在我的例子中,我必须授予应用程序池用户对该文件夹的访问权

见:

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


希望这能有所帮助。

Skye,对不起,是不是你的路径在

using (var fileStream = new FileStream(path, FileMode.Create))
        {
            await examFile.CopyToAsync(fileStream);
        }
实际上是文件夹@“D:\biologyMedia\“+diseaseId+@”\因此不是文件名


因此,您试图将文件复制到文件夹中,而不是复制到文件夹中?

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

谢谢,但不幸的是,这对IIS ExpressHi不起作用。我首先创建了路径,它看起来像:“D:\biologyMedia\394837\”然后我在复制文件时使用该路径是的,但我认为您需要执行类似于
新建文件流(路径+“filename”,FileMode.Create)
的操作,以便文件流“指向”一个文件进行复制操作尝试删除文件夹
biologyMedia