当尝试在Visual Studio asp.net 的Microsoft Azure网站上创建一个文件夹时,我收到错误:

本文关键字:一个 文件夹 错误 创建 Visual Studio asp net 网站 Azure Microsoft | 更新日期: 2023-09-27 18:31:15

我的电脑上只有 4 个用户,所有人都可以完全控制目录上的所有内容,并且在本地(调试)模式和 Azure 中收到此错误。

我所做的是尝试为用户创建一个文件夹来上传他们的文件:

if (!Directory.Exists("~/"+Session["user_id"]+"/"))
{
    Directory.CreateDirectory("~/" + Session["user_id"] + "/");
}
if (FileUpload1.HasFile)
{
    FileUpload1.PostedFile.SaveAs(Server.MapPath("~/" + Session["user_id"] + "/") + FileUpload1.FileName);
}

是什么修复了它

string mapa = (Path.Combine(HttpContext.Current.Server.MapPath("~/Content/" + Session["user_id"].ToString() + "/")));
            if (!Directory.Exists(mapa))
            {
                Directory.CreateDirectory(mapa);
            }
 FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Content/" + Session["user_id"].ToString() + "/") + FileUpload1.FileName);

这在本地工作,但我仍在 azure 网站上工作

当尝试在Visual Studio asp.net 的Microsoft Azure网站上创建一个文件夹时,我收到错误:

"Microsoft Azure 网站" 我假设你指的是 Azure 应用服务(以前称为 Azure 网站)。

您的文件夹的完整路径是什么?在 Azure 应用服务中,Web 应用在沙盒中运行,你只能对"D:''home"或临时文件夹"D:''local''Temp"下的子文件夹具有写入访问权限。

更新:

我的猜测是 Directory.Exists 不会解析您的路径,而 Server.MapPath 将您的路径视为相对路径。我建议使用绝对路径并从应用设置中读取它,以便在部署时可以将应用设置更新为 Azure 中的正确路径

此代码

 if (!Directory.Exists("/Content/" + Session["user_id"] + "/"))
 {
       Directory.CreateDirectory("/Content/" + Session["user_id"] + "/");
 }
 if (FileUpload1.HasFile)
 {
       FileUpload1.PostedFile.SaveAs(Server.MapPath("/Content/" + Session["user_id"] + "/") + FileUpload1.FileName);
 }

当前给出此错误https://i.stack.imgur.com/kG2Sf.png

附加信息:用户 ID 变量为 101,因此路径完全正确。路径不存在,因为由于某种原因,Directory.CreateDirectory不会创建它们(文件夹),即使我添加了对文件夹的 IIS IURS 完全访问权限(我知道,因为我正在运行调试模式并且我在本地检查)。