如何使用 linux os 修复 Azure 应用服务中的 "IOException: Read-only file system" ASP.NET 核心问题?
How to fix issue "IOException: Read-only file system" ASP.NET Core in Azure App Service with linux os?
我使用 Visual Studio 2019 将基于 ASP.NET Core 的 Web 应用程序部署到 Azure。一切正常,除了实际访问 folder/file 的上传图像功能。非常感谢您的建议。
public string UploadFile(IFormFile image)
{
if (image == null) return null;
try
{
string fileName = Guid.NewGuid().ToString() + image.FileName;
string filePath = Path.Combine(_hostingEnvironment.WebRootPath, "Images", "ProductImages", fileName);
var extension = new[] { "image/jpg", "image/png", "image/jpeg" };
if (!extension.Contains(image.ContentType))
return null;
using (FileStream file = new FileStream(filePath, FileMode.Create))
{
image.CopyTo(file);
}
return fileName;
}
catch (Exception ex)
{
throw;
}
}
错误:
An unhandled exception occurred while processing the request.
IOException: Read-only file system
添加文件访问权限
FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write);
我测试了你的代码,发现它在本地运行良好。所以我尝试将此应用程序部署到 azure webapp(linux 平台)。
也遇到过这种情况。所以我检查了 Azure 门户中的应用程序设置。
解决方案
在 Azure 门户中的应用程序设置中删除 WEBSITES_RUN_FROM_PACKAGE
选项。
为什么以及如何解决
可能是 publishsettings 文件中的一些设置导致了这个问题,您可以从 azure portal 下载 publishsettings。
并导入到你的IDE(如vs2019),或者你可以尝试使用另一台电脑部署应用程序以防止生成WEBSITES_RUN_FROM_PACKAGE
。
我使用 Visual Studio 2019 将基于 ASP.NET Core 的 Web 应用程序部署到 Azure。一切正常,除了实际访问 folder/file 的上传图像功能。非常感谢您的建议。
public string UploadFile(IFormFile image)
{
if (image == null) return null;
try
{
string fileName = Guid.NewGuid().ToString() + image.FileName;
string filePath = Path.Combine(_hostingEnvironment.WebRootPath, "Images", "ProductImages", fileName);
var extension = new[] { "image/jpg", "image/png", "image/jpeg" };
if (!extension.Contains(image.ContentType))
return null;
using (FileStream file = new FileStream(filePath, FileMode.Create))
{
image.CopyTo(file);
}
return fileName;
}
catch (Exception ex)
{
throw;
}
}
错误:
An unhandled exception occurred while processing the request. IOException: Read-only file system
添加文件访问权限
FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write);
我测试了你的代码,发现它在本地运行良好。所以我尝试将此应用程序部署到 azure webapp(linux 平台)。
也遇到过这种情况。所以我检查了 Azure 门户中的应用程序设置。
解决方案
在 Azure 门户中的应用程序设置中删除 WEBSITES_RUN_FROM_PACKAGE
选项。
为什么以及如何解决
可能是 publishsettings 文件中的一些设置导致了这个问题,您可以从 azure portal 下载 publishsettings。
并导入到你的IDE(如vs2019),或者你可以尝试使用另一台电脑部署应用程序以防止生成WEBSITES_RUN_FROM_PACKAGE
。