ASP.NETプロファイルの読み取り、書き込み操作
web.configファイルはXMLファイルですが、権限のため、通常のXMLファイルを操作するように配置中に変更することはできません.NETにはWebに対するクラスが用意されている.configを修正します.
次はwebについてです.configは汎用クラスのコードを変更します.
上のコードをAppに置くCodeフォルダの下では、プロジェクトで直接使用できます.
このクラスの使用方法を一例で示します.
フロントコード
バックグラウンドコードの作成には、プロファイルの読み書き操作クラスがあるDLLへの参照を追加する必要がある場合があります.
バックグラウンドコード:
フォームに次の情報を順に入力します.
county china
conn Data Source=(local);...
次に、プロファイルに何か変化があるかを見てみましょう.
次は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);...
次に、プロファイルに何か変化があるかを見てみましょう.