【发布时间】:2017-06-13 04:37:19
【问题描述】:
我是 ASP.NET Core 的新手,所以我正在制作 API。我正在尝试通过我的 Web API 上传图片。图片将被保存到网络服务器上。我在 Windows Server 2016 标准版 VPS 机器上运行 API。我在机器上安装了 IIS 10。我回来的错误(远程调试时):
{System.UnauthorizedAccessException:对路径“C:\HomeNET\Houses\13”的访问被拒绝。 在 System.IO.Win32FileStream..ctor(字符串路径、FileMode 模式、FileAccess 访问、FileShare 共享、Int32 bufferSize、FileOptions 选项、FileStream 父级) 在 System.IO.Win32FileSystem.Open(字符串 fullPath、FileMode 模式、FileAccess 访问、FileShare 共享、Int32 bufferSize、FileOptions 选项、FileStream 父级) 在 System.IO.FileStream.Init(字符串路径、FileMode 模式、FileAccess 访问、FileShare 共享、Int32 bufferSize、FileOptions 选项) 在 System.IO.FileStream..ctor(字符串路径,FileMode 模式) 在 HomeNetAPI.Controllers.HouseController.d__6.MoveNext() 在 C:\Users\okuhl\Documents\HomeNet\Web API\HomeNetAPI\src\HomeNetAPI\Controllers\HouseController.cs:line 83}
这很奇怪,因为创建了目录,但它们应该不存在。下面是一些失败发生的代码:
if (resultHouse != null)
{
if (!Directory.Exists($"C:/HomeNET/Houses/{resultHouse.HouseID}"))
{
Directory.CreateDirectory($"C:/HomeNET/Houses/{resultHouse.HouseID}");
}
String fileName = new FileInfo(imageFile.FileName).Name;
String fileExtension = new FileInfo(imageFile.FileName).Extension;
using (var fileStream = new FileStream($"C:/HomeNET/Houses/{resultHouse.HouseID}",
FileMode.Create)) //Bombs out after this line
{
var result = imageFile.CopyToAsync(fileStream);
if (result.IsCompleted)
{
newHouse.HouseImage = Path.Combine($"C:/HomeNET/Houses/{resultHouse.HouseID}", $".{fileExtension}");
var updateResult = await Task.Run(() =>
{
return houseRepository.UpdateHouse(newHouse);
});
if (updateResult != null)
{
response.DidError = false;
response.Message = $"House {newHouse.Name} has been created successfully! Invite friends ad family to your house!";
response.Model = newHouse;
return Ok(response);
}
else
{
response.DidError = true;
response.Message = "Something went wrong with creating the house. Please try again";
response.Model = newHouse;
return BadRequest(response);
}
}
else
{
response.DidError = true;
response.Message = $"Something Went wrong with creating your house. House image could not be saved onto the system. \n {result.Exception.Message}";
response.Model = newHouse;
return BadRequest(response);
}
}
}
我已尝试让每个人都可以使用该文件夹,但没有成功。我还尝试授予我的 AppPool 修改文件夹的权限,但没有成功。
【问题讨论】:
标签: c# asp.net-core asp.net-core-webapi