我是.NET的新手。当我上传图片时,我收到错误
System.UnauthorizedAccessException的:
访问路径'C:\ Inetpub \ vhosts \ cmcnoida.com \ httpdocs \ i_image \ 123'被拒绝。
此代码非常适用于本地,但在上面的实时服务器上生成错误。我该怎么办?
我的代码:
protected void Button1_Click(object sender, EventArgs e)
{
string t_sname, t_cname, t_pack, t_college, t_djoin;
if (TextBox2.Text == "")
{ t_sname = "-"; }
else
{ t_sname = TextBox2.Text; }
if (TextBox3.Text == "")
{ t_cname = "-"; }
else
{ t_cname = TextBox3.Text; }
if (TextBox4.Text == "")
{ t_pack = "-"; }
else
{ t_pack = TextBox4.Text + " lacs pa"; }
if (TextBox5.Text == "")
{ t_college = "-"; }
else
{ t_college = TextBox5.Text; }
if (TextBox6.Text == "")
{ t_djoin = "-"; }
else
{ t_djoin = TextBox6.Text; }
// conn = new SqlConnection("Data Source=USER-PC;Initial Catalog=cmcnoida;Integrated Security=True");
conn = new SqlConnection("Data Source=127.0.0.1;Integrated Security=False;User ID=kvch_db;Connect Timeout=200;Encrypt=False;Packet Size=4096;Database=cmcnoida;password=kv_12_2014");
//conn = new SqlConnection("server=singhal;database=abc;Trusted_Connection=yes");
comm = new SqlCommand();
comm.Connection = conn;
comm.CommandText = "select max(id) from placement";
conn.Open();
int i = (int)comm.ExecuteScalar();
conn.Close();
string a = (i + 1).ToString();
DirectoryInfo dd2 = new DirectoryInfo(Server.MapPath("~\\i_image\\" + a));
dd2.Create();
dd2.Refresh();
string fup;
if (FileUpload1.HasFile == true)
{
fup = "~\\i_image\\" + a + "\\" + FileUpload1.FileName;
FileUpload1.PostedFile.SaveAs(Server.MapPath(fup));
}
else
{
fup = "~\\i_image\\" + a + "\\dummy-man.jpg";
File.Copy(Server.MapPath("~\\admin\\dummy-man.jpg"), Server.MapPath("~\\i_image\\" + a + "\\dummy-man.jpg"));
}
comm.Connection = conn;
comm.CommandText = "insert into placement values('" + t_sname + "','" + t_cname + "','" + t_pack + "','" + t_college + "','" + t_djoin + "','" + fup + "')";
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
// binddatagrid();
TextBox2.Text = "";
TextBox3.Text = "";
TextBox4.Text = "";
TextBox5.Text = "";
TextBox6.Text = "";
TextBox2.Focus();
Response.Write("<script language=JavaScript> alert('Placement Record Inserted !!'); </script>");
}
我该怎么做才能解决这个问题?
答案 0 :(得分:0)
如果您在服务器上托管此内容,则需要设置该文件夹的权限。以下是对What are all the user accounts for IIS/ASP.NET and how do they differ?
的好读但我怀疑不是这里的情况。我想你是在这里的共享环境中托管它 如果是这种情况,则无法使用代码设置服务器文件夹安全权限。因此,您必须联系您的托管服务提供商,并要求他们授予i_image文件夹的权限。
我提到了i_image文件夹,因为子文件夹123在您的代码中看起来是动态的。设置根文件夹的权限就足够了。
答案 1 :(得分:0)
在许多涉及访问安全性的情况下,您需要使用ASP.NET模拟(作为Windows用户帐户运行)。然后,您需要在web.config中进行一些更改。
<configuration>
<system.web>
<identity impersonate="true"/>
</system.web>
</configuration>
<identity impersonate="true" userName="DOMAIN\UserName" password="***" />
您需要提供对您要写入的文件夹具有写访问权限的用户凭据。
这些设置也可以在应用程序池的IIS中完成。