可否在应应程序中改变WEB.CONFIG的配制?现在我可以得到WEB.CONFIG中的值,但就是不可以改变?要怎么办?
可以在应用程序中改变WEB.CONFIG中某些数据的值吗?得到为;string sqlconn=System.Configuration.ConfigurationSettings.AppSettings["sqlconn"];更改可否为这样:System.Configuration.ConfigurationSettings.AppSettings["sqlconn"]=connstr;
用ASP.NET操作XML文档不是难事
并没有对web.comfig文件进行操作呀,我觉得应该用一个文件流读取web.config文件,然后在对它进行修改
解决方案:
web.cofig文件其实也是xml,所以使用对xml操作的方法即可实现。
由于xp操作系统对操作权限的限制,所以在调试前应该将web文件夹的权限进行设置,添加AspNet用户,并使之拥有修改的权限。
主要使用XmlDocument来解析web.config.并用SelectSingleNode()方法来定位要修改的配置节。要注意的是最后程序要Save(),所以,你的apsnet帐号必须对web.config拥有写权限 代码如下:
1//节“SysAdminPass”用来存储密码
2
3XmlDocument webconfigDoc = new XmlDocument();
4
5string filePath = HttpContext.Current.Request.PhysicalApplicationPath + @"\web.config";
6
7//设置节的xml路径
8string xPath = "/configuration/appSettings/add[@key='?']";
9
10//加载web.config文件
11webconfigDoc.Load(filePath);
12
13//找到要修改的节点
14XmlNode passkey = webconfigDoc.SelectSingleNode(xPath.Replace("?","SysAdminPass"));
15
16//设置节点的值
17passkey.Attributes["value"].InnerText = strNewpwd;
18
19//保存设置
20webconfigDoc.Save(filePath);
21
// doc = new XmlDocument();
// doc.Load(FileInfo.FullName);
// //查找到appSettings中的節點
// nodeList = doc.SelectSingleNode("configuration/appSettings").ChildNodes;
// foreach(XmlNode Node in nodeList)
// {
// if(Node.Name == "add")
// {
// if(Node.Attributes.GetNamedItem("key").Value == "myConnStr")
// {
// string valu=@"Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=0;Data Source='" + this.Context.Parameters["targetdir"] + @"database\nis.mdb" + "';Mode=Share Deny None;Jet OLEDB:Engine Type=5;Provider='Microsoft.Jet.OLEDB.4.0';Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Properties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1";
// // string val = String.Format("Persist Security Info=False;Data Source={0};Initial Catalog={1};User ID={2};Password={3};Packet Size=4096;Pooling=true;Max Pool Size=100;Min Pool Size=1",this.Context.Parameters["server"],this.Context.Parameters["dbname"],this.Context.Parameters["user"],this.Context.Parameters["pwd"]);
// Node.Attributes.GetNamedItem("value").Value = valu;
// }
// }
// }
// doc.Save(FileInfo.FullName);
这里写得很不错,呵呵 顶