ASP.NET配置文件的读、写操作

虽然web.config文件是一个XML文件,但是由于权限的原因它在部署中不能像操作普通XML文件那样进行修改,在.NET 中提供了一个类用于对Web.config进行修改。

下面是针对web.config修改通用类的代码。

 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.Configuration;

/// <summary>
/// ConfigurationOperator 的摘要说明
/// </summary>
public class ConfigurationOperator:IDisposable
{
    private Configuration config;
	public ConfigurationOperator():this(HttpContext.Current.Request.ApplicationPath)
	{
		//
		// TODO: 在此处添加构造函数逻辑
		//
	}
    public ConfigurationOperator(string path)
    {
        config = WebConfigurationManager.OpenWebConfiguration(path);
    }
    /// <summary>
    /// 设置应用程序配置节点,如果已经存在此节点,则会修改该节点的值;否则添加此节点
    /// </summary>
    /// <param name="key">节点名称</param>
    /// <param name="value">节点值</param>
    public void SetAppSetting(string key, string value)
    {
        AppSettingsSection appSetting = (AppSettingsSection)config.GetSection("appSettings");
        if (appSetting.Settings[key]==null)//如果不存在此节点,则添加
        {
            appSetting.Settings.Add(key, value);
        }
        else//如果存在,则修改
        {
            appSetting.Settings[key].Value = value;
        }
    }
    /// <summary>
    /// 设置数据库连接字符串节点,如果不存在此节点,则会添加此节点及对应的值;存在则修改
    /// </summary>
    /// <param name="key"></param>
    /// <param name="connectionString"></param>
    public void SetConnectionString(string key, string connectionString)
    {
        ConnectionStringsSection connectionSetting = (ConnectionStringsSection)config.GetSection("connectionStrings");
        if (connectionSetting.ConnectionStrings[key]==null)//如果不存在此节点则添加
        {
            ConnectionStringSettings connectionStringSettings = new ConnectionStringSettings(key,connectionString);
            connectionSetting.ConnectionStrings.Add(connectionStringSettings);
        }
        else
        {
            connectionSetting.ConnectionStrings[key].ConnectionString = connectionString;
        }
    }
    /// <summary>
    /// 保存所做的操作
    /// </summary>
    public void Save()
    {
        config.Save();
        config = null;
    }
    #region IDisposable 成员

    public void Dispose()
    {
        if (config!=null)
        {
            config.Save();
        }
    }

    #endregion
}

 

 把上面的代码放到App_Code文件夹下,我们在项目中就可以直接使用了。

我们通过一个例子来演示如何使用这个类。

前台代码

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ConfigModifyDemo.aspx.cs" Inherits="ConfigModifyDemo" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>在部署后修改Web.config的例子</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table style="width: 489px">
            <tr>
                <td style="width: 155px">
                    类型</td>
                <td style="width: 154px">
                    名称</td>
                <td>
                    值</td>
            </tr>
            <tr>
                <td style="width: 155px">
                    程序配置</td>
                <td style="width: 154px">
                    <asp:TextBox ID="txtKey" runat="server"></asp:TextBox><asp:RequiredFieldValidator
                        ID="RequiredFieldValidator1" runat="server" ErrorMessage="*" Display="Dynamic" ControlToValidate="txtKey"></asp:RequiredFieldValidator></td>
                <td>
                    <asp:TextBox ID="txtAppSetting" runat="server"></asp:TextBox></td>
            </tr>
            <tr>
                <td style="width: 155px">
                    数据库连接</td>
                <td style="width: 154px">
                    <asp:TextBox ID="txtConnectionName" runat="server"></asp:TextBox><asp:RequiredFieldValidator
                        ID="RequiredFieldValidator2" runat="server" ErrorMessage="*" ControlToValidate="txtConnectionName" Display="Dynamic"></asp:RequiredFieldValidator></td>
                <td>
                    <asp:TextBox ID="txtConnectionString" runat="server"></asp:TextBox></td>
            </tr>
        </table>
    
    </div>
        <asp:Button ID="btnModify" runat="server" Text="修改" OnClick="btnModify_Click" />
    </form>
</body>
</html>

 

 编写后台代码有时需要增加对配置文件读写操作类所在DLL的引用。

后台代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.Configuration;//注意添加此命名空间

public partial class ConfigModifyDemo : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnModify_Click(object sender, EventArgs e)
    {
        string appSetting = txtAppSetting.Text;//appSetting子节点值
        string connectionString = txtConnectionString.Text;//连接字符串
        string key = txtKey.Text;//appSetting子节点key
        string connectionName = txtConnectionName.Text;//连接name
        ConfigurationOperator op = new ConfigurationOperator();
        op.SetAppSetting(key,appSetting);
        op.SetConnectionString(connectionName, connectionString);
        op.Save();
    }
}

 在表单中依次填入下列信息:

county                  china

conn                      Data Source=(local);...

然后去看配置文件有什么变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值