web-dev-qa-db-ja.com

asp.netコアのアクセス拒否ファイル


プロジェクトを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オプション)でSystem.IO.FileStream..ctor(文字列パス、FileModeモード、FileAccessアクセス、FileShare共有、Int32 bufferSize、FileOptionsオプション)

ActionController

[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();
}

この例外を解決するにはどうすればよいですか?

6
Mohammad Daliri

wwwrootフォルダを右クリック-> [プロパティ]-> [セキュリティ]タブ-> Editボタンをクリック-> Enter IIS AppPool\DefaultAppPool user->クリックCheck names-> OK ->次に、Write permissionを指定します。

11
VahidN