更新 - 我的问题的答案实际上并不是真正的许可问题。
当我意识到我确实试图不正确地保存文件时,我最终解决了我的问题。我的代码段httpPostedFile.SaveAs(fileSavePath)
错误。
最终要做的是尝试将文件保存到与路径名称exact
相同的路径。为了解决这个问题,我只是将文件名附加到fileSavePath
,然后成功保存了文件。
所以现在这段代码看起来像这样:
var extension = Path.GetExtension(httpPostedFile.FileName).toLower();
if (extension == ".jpg" || extension == ".jpeg" || extension == ".png")
{
var fileName = Path.GetRandomFileName() + extension;
var fileSavePath = serverPath + path + fileName;
httpPostedFile.SaveAs(fileSavePath);
}
P.S。 - 如果你可以投票让这个问题重新开放,这样我就可以提供这个可以理解的答案,因为这个帖子应该是一个副本,实际上并没有解决我的问题。
原始帖子
我尝试做的事情相当简单,但是我对此异常感到困惑:
类型' System.UnauthorizedAccessException'的例外情况发生在mscorlib.dll中但未在用户代码中处理
其他信息:访问路径' C:\ Users \ TCT-User-2 \ Source \ Repos \ Shift_Production \ Shift.Web \ Content \ images \ UserAvatars'被拒绝。
我已经在SO上查看了其他一些类似的问题,他们都建议检查以确保文件夹或文件不是只读的。到目前为止,我可以告诉他们不是,但我仍然遇到这个问题。也许这是我在我的代码中做错的其他事情?
我基本上只是将图片上传到我的Web API
项目,然后尝试将其本地保存到服务器。
以下是我必须做的事情:
[Route("Account/Avatar")]
[HttpPost]
public IHttpActionResult UploadAvatar()
{
string serverPath = _appSettingService.GetApplicationSettings().ServerPath;
string imagePath = _appSettingService.GetApplicationSettings().AppUserProfileImagePath;
if (HttpContext.Current.Request.Files.AllKeys.Any())
{
var httpPostedFile = HttpContext.Current.Request.Files["file"];
if (httpPostedFile != null)
{
var fileSavePath = serverPath + imagePath;
httpPostedFile.SaveAs(fileSavePath);
}
}
return Ok();
}