C# 上载映像在服务器上不起作用

C# 上载映像在服务器上不起作用,c#,asp.net,C#,Asp.net,将文件从本地计算机上载到服务器时,它向我显示 "Server Error in '/' Application. Access to the path 'G://images\blog-image2.jpg' is denied." 有人能帮我解决这个问题吗。我的c代码是: protected void btnSubmit_Click(object sender, EventArgs e) { //Get Filename from fileupload control str

将文件从本地计算机上载到服务器时,它向我显示

"Server Error in '/' Application.
Access to the path 'G://images\blog-image2.jpg' is denied."
有人能帮我解决这个问题吗。我的c代码是:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    //Get Filename from fileupload control
    string filename = Path.GetFileName(fileuploadimages.PostedFile.FileName);
    //Save images into Images folder
    fileuploadimages.SaveAs(Server.MapPath("~/images/" + filename));

    //Getting dbconnection from web.config connectionstring
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconnection"].ToString());
    //Open the database connection
    con.Open();
    //Query to insert images path and name into database
    SqlCommand cmd = new SqlCommand("Insert into tblimgs(ImageName,ImagePath) values(@ImageName,@ImagePath)", con);
    //Passing parameters to query
    cmd.Parameters.AddWithValue("@ImageName", filename);
    cmd.Parameters.AddWithValue("@ImagePath", "~/images/" + filename);
    cmd.ExecuteNonQuery();
    //Close dbconnection
    con.Close();
    Response.Redirect("default.aspx");
}

这有什么问题?

您需要确保您使用的帐户可以访问该文件路径


此外,我相信,为IIS用户帐户IUSR授予对该文件夹的访问权限也可能会有所帮助。

您需要检查应用程序在哪个用户下运行,可能是由于安全原因,该用户帐户将无权写入任何子文件夹。为该用户授予“图像”文件夹的写入权限,并确保该文件夹是您唯一授予其写入权限的文件夹,以便将安全风险降至最低

您还可以将代码重构为:

fileuploadimages.SaveAs(Path.Combine(Server.MapPath("~/images"),filename)));
因为MapPath无法知道路径是目录还是文件,所以它不会在映射路径后面附加反斜杠,所以它不会检查给定路径是否确实存在

编辑: 要向该文件夹授予正确的权限,首先需要从该网站的应用程序池中找出它运行时使用的标识。默认情况下,这是应用程序池标识。查找IIS APPPOOL\DefaultAppPool用户。有关更多详细信息,请参见IIS官方网站上的此内容

如果这对您不起作用,请检查您的asp.net帐户{MACHINE}\ASPNET是否具有对该图像位置的写入权限。考虑授予对ASP.NET请求标识的资源访问权限。为此,右键单击下载文件夹属性>安全选项卡>编辑>添加>位置>选择本地计算机>单击确定>在下面键入ASPNET输入要选择的对象名称>单击检查名称选中所需访问完全控制的框。如果这对你不起作用,那么考虑和网络服务做同样的事情。 现在应该显示您的本地{MACHINENAME}\ASPNET帐户,然后设置该帐户的写入权限


否则,如果应用程序是通过模拟的,则标识将是匿名用户(通常为IUSR\u MACHINENAME)或经过身份验证的请求用户。

我认为您必须允许用户IUSER或类似的方式将服务器上的权限写入此目录:G:\images\中。请尝试此服务器。MapPath~\\images\\+filename我也尝试了此操作,但什么都没有改变…它仍然显示相同的错误…我如何才能授予该文件夹的权限?我是从ftp尝试的,对吗?当我在本地机器上运行它时,它可以完美地工作。它将所有图像上载到同一服务器上的“图像”文件夹中…当我将其上载到服务器上时,它为什么不工作?如何授予该路径的访问权限?转到windows资源管理器中的G:\images,右键单击该文件夹,然后转到属性->转到安全选项卡->单击编辑->单击添加->在名称框中键入IUSR->单击检查名称->如果弹出窗口超过该值,请选择第一个。->单击确定->单击列表框中的IUSR项目->选择显示IUSR权限的完全控制->单击应用->单击确定。之后,IIS用户应该可以访问该目录。