Web.sitemap error - "The process cannot load /inetpub/wwwroot/web.sitemap because its being used by

I get this error when i deploy and run asp .net application in 2 load balance server. The error message is "The process cannot load /inetpub/wwwroot/web.sitemap because its being used by another process". What is the problem actually? Is it at the server or at my coding.?..Please help anyone. Reminder again..i'm using 2 load balance server. TQ so much.

My code are as below:.

Response.ContentType = "text/xml";

using (XmlTextWriter writer = new XmlTextWriter(Server.MapPath("Web.sitemap"), Encoding.UTF8))
{
writer.WriteStartDocument();
writer.WriteRaw("\n");
writer.WriteStartElement("siteMap");
writer.WriteAttributeString("xmlns", "http://schemas.microsoft.com/AspNet/SiteMap-File-1.0");

writer.WriteRaw("\n");
writer.WriteRaw("\t");
writer.WriteStartElement("siteMapNode");
writer.WriteAttributeString("url", "~/Home.aspx");
writer.WriteAttributeString("title", "Home");
writer.WriteRaw("\n");
writer.WriteRaw("\t\t");
writer.WriteStartElement("siteMapNode");
writer.WriteAttributeString("url", "~/MainPage/main.aspx?system=" + lblsystemID.Text);
writer.WriteAttributeString("title", lblProfile.Text);
using (SqlConnection con = ClassConn.GetPortalCon())
{

SqlCommand cmd = new SqlCommand("ret_Menu", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@userID", nopkj);
cmd.Parameters.AddWithValue("@systemID", lblsystemID.Text);

SqlDataReader sc = cmd.ExecuteReader();

if (sc.HasRows)
{
while (sc.Read())
{

var menuID = sc["menuID"].ToString();

writer.WriteRaw("\n"); writer.WriteRaw("\t\t\t");
writer.WriteStartElement("siteMapNode");
writer.WriteAttributeString("url", sc["menuPath"].ToString());

writer.WriteAttributeString("title", sc["menuDesc_bi"].ToString());

writer.WriteAttributeString("menuID", sc["menuID"].ToString());

using (SqlConnection con1 = ClassConn.GetPortalCon())
{

SqlCommand cmd1 = new SqlCommand("ret_SubMenuSiteMap", con1);
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.Parameters.AddWithValue("@userID", nopkj);
cmd1.Parameters.AddWithValue("@systemID", lblsystemID.Text);
cmd1.Parameters.AddWithValue("@menuID", menuID);

SqlDataReader sc1 = cmd1.ExecuteReader();

if (sc1.HasRows)
{
while (sc1.Read())
{
string menuPath = sc1["subMenuPath"].ToString();


writer.WriteRaw("\n");
writer.WriteRaw("\t\t\t\t");
writer.WriteStartElement("siteMapNode");

writer.WriteAttributeString("title", sc1["subMenuDesc_bi"].ToString());
writer.WriteAttributeString("description", sc1["subMenuDesc_bi"].ToString());

writer.WriteEndElement();
}
}
sc1.Close();
sc1.Dispose();
con1.Close();
con1.Dispose();

}
writer.WriteEndElement();
writer.Flush();

}
}
sc.Close();
sc.Dispose();
con.Close();
con.Dispose();
}

writer.WriteFullEndElement();
writer.WriteEndDocument();
writer.Flush();
writer.Close();

}