System.UnauthorizedAccessException:无法写入wwwroot图片目录权限问题排查
解决ASP.NET Core文件保存至wwwroot目录的权限拒绝问题
首要代码错误:路径拼接顺序颠倒
你的代码里Path.Combine的参数顺序完全搞反了,该方法要求先传入目录路径,再传入文件名,但你写的是:
var filePath = Path.Combine(fileName, productPath);
这会生成类似xxx-guid.jpg\wwwroot\Images\Product的错误路径,系统会尝试把文件写到一个以文件名命名的目录下——这个目录根本不存在,就算尝试创建也会触发权限类异常。
修正后的正确写法:
var filePath = Path.Combine(productPath, fileName);
权限排查补充点(即使已手动配置权限)
- 检查应用池身份权限:如果用IIS部署,确保应用池对应的身份(比如
IIS AppPool\你的应用池名称)拥有wwwroot\Images\Product目录的读写权限,不要只给当前登录用户配置权限。 - 确认目标目录存在:先手动创建
wwwroot\Images\Product目录,避免因父目录不存在导致的创建失败(异常提示权限,但路径错误也可能触发类似提示)。 - 取消目录只读属性:右键目标目录→属性→取消勾选「只读」选项,应用到所有子文件和目录。
- 排除杀毒软件拦截:Windows Defender或第三方杀毒软件可能会拦截ASP.NET Core进程写入目录,暂时关闭防护后测试。
内容的提问来源于stack exchange,提问作者Ashwin Gholkar
相关产品推荐
相关产品推荐

