如何使用 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