当尝试在visual studio asp.net上的microsoft azure网站上创建一个文件夹时,我收到错误:System.UnauthorizedAccessException

时间:2016-01-20 17:28:40

标签: c# asp.net azure visual-studio-2012

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

我正在尝试为用户创建文件夹以上传文件:

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);

这在本地工作,我仍在使用azurewebsites

2 个答案:

答案 0 :(得分:0)

“microsoft azure website”我假设您参考Azure App Service(以前称为Azure网站)。

您的文件夹的完整路径是什么?在Azure App Service中,您的Web应用程序在沙箱中运行,您只能对“D:\ home”或临时文件夹“D:\ local \ Temp”下的子文件夹具有写入权限。

更新

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

答案 1 :(得分:-1)

此代码

 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);
 }

目前提供此错误 http://i.imgur.com/vSXWJSs.png

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