在开发网站的时候我们常常会用到一些配置文件,在.Net2.0下面微软给我们提供了一个ConfigurationManager这样一个类来管理存储于配置文件中的信息,这样我们将配置项写在web.config 文件的AppSettings这一节里面就可以使用键值直接来访问它了.就象这样System.Configuration.ConfigurationManager.AppSettings["MyNameIs"], 但是这里有个问题就是我们有一些设置希望在运行时可以通过网络访问的形式去作配置而不是手动修改web.config,但是ConfigurationManager并没有给我们提供一个方法来保存我们的设置(或者是我不知道,还有别的方法吧).还有一个原因是因为.Net运行框架会在应用程序启动后自动监视web.config,一旦这个文件被修改应用程序会自动重启这样的话我们的一些状态数据就会丢失,有没有更好的办法呢,其实是有的,我们的解决方案就是使用独立的可读写配置文件.先来看看代码吧.
using System;
using System.Web;
using System.IO;
using System.Xml.Serialization;
namespace GB.Utility
{
/// <summary>
/// 全站配置文件读写
/// </summary>
[Serializable]
public class SiteSettings
{
private static readonly string currentConfigFileName = "GBSettings.config";
#region PublicProperty
#region AbsoluteWebRoot
private string absoluteWebRoot;
/// <summary>
/// 站点的绝对Url引用
/// </summary>
public string AbsoluteWebRoot
{
get { return absoluteWebRoot; }
set { absoluteWebRoot = string.IsNullOrEmpty(value) ? string.Empty : value; }
}
#endregion
#region RelativeWebRoot
private string relativeWebRoot;
/// <summary>
/// 站点的相对Url引用
/// </summary>
public string RelativeWebRoot
{
get { return relativeWebRoot; }
set { relativeWebRoot = string.IsNullOrEmpty(value) ? string.Empty : value; }
}
#endregion
#region DefaultPageSize
private int defaultPageSize;
/// <summary>
/// 默认的分页大小
/// </summary>
public int DefaultPageSize
{
get { return defaultPageSize; }
set { defaultPageSize = value; }
}
#endregion
#region DefaultAbstractSize
private int defaultAbstractSize;
/// <summary>
/// 默认的摘要长度值
/// </summary>
public int DefaultAbstractSize
{
get { return defaultAbstractSize; }
set { defaultAbstractSize = value; }
}
#endregion
#region Theme
private string theme;
/// <summary>
/// 风格设定
/// </summary>
public string Theme
{
get { return theme; }
set { theme = value; }
}
#endregion
#endregion
#region Common Members
#region Private Members
private static string _configurationFilePath =
System.IO.Path.Combine(
System.AppDomain.CurrentDomain.BaseDirectory.Replace("/", System.IO.Path.DirectorySeparatorChar.ToString()),
currentConfigFileName);
|