You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建目录成功但复制文件触发UnauthorizedAccessException的解决方法

问题解决方法

核心错误:未指定完整文件路径

你的代码存在关键问题:FileStream构造参数传入的是文件夹路径(uploadFolderPath),而非包含文件名的完整文件路径。系统会尝试将文件夹当作文件来创建/写入,这必然触发权限拒绝异常——哪怕你能创建文件夹,也不能把文件夹当作文件进行写入操作。

修正后的代码

public string UploadPdfFile(IFormFile file, string folderName)
{
    if (file == null || file.Length == 0)
    {
        return string.Empty;
    }

    // 定义文件夹路径
    string uploadFolderPath = Path.Combine(_env.WebRootPath, @"uploads\books", folderName);

    if (!Directory.Exists(uploadFolderPath))
        Directory.CreateDirectory(uploadFolderPath);

    // 生成包含文件名的完整文件路径
    string fullFilePath = Path.Combine(uploadFolderPath, file.FileName);

    // 保存文件到指定路径
    using (var stream = new FileStream(fullFilePath, FileMode.Create))
    {
        file.CopyTo(stream);
    }

    return fullFilePath;
}

额外排查点(若修正后仍报错)

  • 检查目标文件夹NTFS权限:确保运行应用的身份(如IIS AppPool账户、开发时的当前用户)拥有该文件夹的写入权限。
  • 处理非法文件名:如果原文件名包含特殊字符,可通过Path.GetInvalidFileNameChars()过滤后生成安全文件名。
  • 验证进程权限:若使用IIS Express运行,确认IIS Express进程有权写入目标目录(管理员模式运行VS通常可解决,但仍需实际验证)。

内容的提问来源于stack exchange,提问作者Rasik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:20:32