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);...
次に、プロファイルに何か変化があるかを見てみましょう.