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用户应该可以访问该目录。