[英]Access to path is denied, Asp.net core 2.0 running on Ubuntu
我无法使用以下代码行。 在我的开发机器(Windows)上它正在工作。 是的,我正在 Windows 上开发应用程序并在 Ubuntu 上部署。 下一个应用我不会这样做。
我收到错误消息“访问路径 /var/... 已定义”。
try
{
Directory.CreateDirectory(dirInfo.FullName + "/" + numDirs);
}
catch(Exception e)
{
return e.Message; // access to the path /var/... is defined
}
我使用 nginx 作为 Kestrel 的代理服务器。 如Microsoft 指南中所述
我试图随机触发一些权限命令,因为我远不是 Ubuntu 的专家,但 CreateDirectory 方法仍然产生错误。
我试过的权限命令:
sudo chown -R www-data:www-data /var/www/PROJECTDIR
sudo find /var/PROJECTDIR -type d -exec chmod 770 {} \;
sudo find /var/PROJECTDIR -type f -exec chmod 660 {} \;
我没有在 /var/www 中设置我的项目我使用的是 /var/anotherdir/anotherdir 之类的东西,这是一个问题吗?
实际上,引发异常的是我的 IFormFile 扩展方法。 我尝试发布尽可能少的代码以使问题更紧凑,但我认为这不再是一个好主意,我应该发布 try catch 块,因为它们在我的项目中。 在我的代码中,我有这样的事情。 观察我只是在测试,最后我摆脱了文字和过多的变量引用。
try
{
Directory.CreateDirectory(dirInfo.FullName + "/" + numDirs);
file.SaveAs(dirInfo.FullName + "/" + numDirs) // it was this that threw the exception.
}
catch(Exception e)
{
return e.Message; // access to the path /var/... is defined
}
那是我犯过的最烦人的错误之一。 幸运的是,我在这篇文章中遇到了一个确切的问题,它解决了我的问题。 我只是通过目录。
不知何故,它在 Windows 上有效,但在 Linux 上却没有。
public static void SaveAs(this IFormFile formFile, string filePath)
{
using (var stream = new FileStream( filePath, FileMode.Create))
{
formFile.CopyTo(stream);
}
}
解决方案:
public static void SaveAs(this IFormFile formFile, string filePath)
{
using (var stream = new FileStream( Path.Combine( filePath, formFile.FileName), FileMode.Create))
{
formFile.CopyTo(stream);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.