【发布时间】:2018-08-02 15:43:10
【问题描述】:
当我将我的项目发布到iis 并且我确实在浏览器上上传了一张图片,所以此操作失败并在logger sysytem 中显示此错误
发生未处理的异常:对路径“C:\Inetpub\vhosts\qarbal.com\back.qarbal.com\wwwroot\images\UserProfile\pic_50.jpg”的访问被拒绝。System.UnauthorizedAccessException:访问路径 'C:\Inetpub\vhosts\qarbal.com\back.qarbal.com\wwwroot\images\UserProfile\pic_50.jpg' 被拒绝。 在 System.IO.FileStream.OpenHandle(FileMode 模式、FileShare 共享、FileOptions 选项) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
动作控制器
[HttpPost("[action]")]
public async Task<IActionResult> EditPhoto()
{
var uploadsRootFolder = Path.Combine(_env.WebRootPath, "images\\UserProfile");
var files = Request.Form.Files;
foreach (var file in files)
{
if (file == null || file.Length == 0)
{
continue;
}
var filePath = Path.Combine(uploadsRootFolder, queryModel.Name + files[0].FileName);
using (var fileStream = new FileStream(filePath, FileMode.Create))
{
await file.CopyToAsync(fileStream).ConfigureAwait(false);
}
}
return Json("ok");
}
startup.cs
public void Configure(ILoggerFactory loggerFactory, IApplicationBuilder app, IHostingEnvironment env)
{
app.UseStaticFiles();
}
如何解决这个异常?
【问题讨论】:
-
您的应用程序池似乎没有足够的权限。
-
应用程序池标识很可能无权访问该路径。尝试让它访问
c:\inetpub(及其所有子目录)。如果应用程序池作为模拟用户运行,您应该选择与inetpub不同的文件夹。
标签: c# iis asp.net-core