I have made a simple page to add news to a site which has values title and link to be redirect.
I Have use xml for the purpose.
When i run code on local host it is working perfectly but when i deploy it on website it shows aceess denied error whenever i'm trying to save the file.
My XML file is
="1.0"="utf-8"
<newsInfo>
<news>
<id>1</id>
<title>AGM (Annual General Meeting) was held on 16th June (Saturday), New Executive Committee has taken charge.</title>
<link>../contact.aspx</link>
</news>
<news>
<id>2</id>
<title>IETE Surat center is thinking to hold its first examination center at SURAT in December 2012, For more Information please send your feedback here.</title>
<link>../contact.aspx</link>
</news>
</newsInfo>
And code is
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Session["7856_UserID"] == null)
{
Response.Redirect("Default.aspx");
}
else
{
lblUserName.Text = "Welcome " + Convert.ToString(Session["7856_UserID"]) + "!";
fillgrid();
}
}
}
protected DataTable retriveDetailsFromXML()
{
XDocument xmlDoc = XDocument.Load(Server.MapPath("~\\Data\\newsInfo.xml"));
var com = from committee in xmlDoc.Descendants("news")
select new
{
id = committee.Element("id").Value,
title = committee.Element("title").Value,
link = committee.Element("link").Value,
};
DataTable dt = getTable();
foreach (var c in com)
{
DataRow dr = dt.NewRow();
dr["id"] = c.id;
dr["title"] = c.title;
dr["link"] = c.link;
dt.Rows.Add(dr);
}
return dt;
}
protected DataTable getTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("title");
dt.Columns.Add("link");
return dt;
}
protected void fillgrid()
{
ASPxGridView1.DataSource = retriveDetailsFromXML();
ASPxGridView1.DataBind();
}
protected void btnAddNew_Click(object sender, EventArgs e)
{
ASPxGridView1.AddNewRow();
}
protected void ASPxGridView1_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
DataTable dt = retriveDetailsFromXML();
XDocument doc = XDocument.Load(Server.MapPath("~\\Data\\newsInfo.xml"));
doc.Element("newsInfo").Add(new XElement("news", new XElement("id", Convert.ToInt32(dt.Rows[dt.Rows.Count - 1][0]) + 1), new XElement("title", e.NewValues[0]), new XElement("link", e.NewValues[1])));
doc.Save(Server.MapPath("~\\Data\\newsInfo.xml"));
fillgrid();
ASPxGridView1.CancelEdit();
e.Cancel = true;
}
protected void ASPxGridView1_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
if (Session["KeyValue"] != null)
{
Int32 key = Convert.ToInt32(Session["KeyValue"]);
XDocument doc = XDocument.Load(Server.MapPath("~\\Data\\newsInfo.xml"));
IEnumerable<XElement> com = doc.Elements("newsInfo").Elements("news");
var oCom = (from member in com
where member.Element("id").Value == key.ToString()
select member).SingleOrDefault();
oCom.SetElementValue("title", e.NewValues[0]);
oCom.SetElementValue("link", e.NewValues[1]);
doc.Save(Server.MapPath("~\\Data\\newsInfo.xml"));
Session["KeyValue"] = null;
}
fillgrid();
ASPxGridView1.CancelEdit();
e.Cancel = true;
}
protected void ASPxGridView1_StartRowEditing(object sender, DevExpress.Web.Data.ASPxStartRowEditingEventArgs e)
{
Session["KeyValue"] = Convert.ToInt32(ASPxGridView1.GetRowValuesByKeyValue(e.EditingKeyValue, "id"));
}
protected void ASPxGridView1_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
XDocument doc = XDocument.Load(Server.MapPath("~\\Data\\newsInfo.xml"));
doc.Element("newsInfo").Elements("news").Where(x => x.Element("id").Value.Trim() == e.Keys["id"].ToString()).Remove();
doc.Save(Server.MapPath("~\\Data\\newsInfo.xml"));
fillgrid();
e.Cancel = true;
}
Can any 1 tell me wat is problem.