天天看點

asp.net操作web.config檔案的類

作者:走進少兒程式設計

簡單寫了一個類,主要用來操作web.config中幾個常用節的值

包括appsetting,ConnectionStrings,customErrors以及設定Mode和跳轉網址

#region webconfig 檔案
public class WebConfig
{
    /// <summary>
    /// 操作 AppSetting 節
    /// </summary>
    public class AppSetting
    {
        /// <summary>
        /// 得到 appsetting 節的值 傳回null出錯
        /// <para>如 add key="a" value="b"/</para>
        /// <para>如 Get("a") 得到的值為 b </para>
        /// <para>傳回null出錯</para>
        /// </summary>
        /// <param name="nodename">節名稱</param>
        /// <returns>節值,傳回null出錯</returns>
        public string Get(string nodename)
        {
            try
            {
                System.Configuration.AppSettingsReader appReader = new System.Configuration.AppSettingsReader();
                if (ConfigurationManager.AppSettings[nodename] != null)
                {
                    string str = Convert.ToString(appReader.GetValue(nodename, typeof(string))).Trim();
                    return str;
                }
                else
                {
                    return null;
                }
            }
            catch (Exception ErrMsg)
            {
                return null;
            }
        }

        /// <summary>
        /// 設定 appsettiong 節的值,成功傳回OK,否則傳回錯誤資訊
        /// </summary>
        /// <param name="key">節名稱</param>
        /// <param name="value">新值</param>
        public string Set(string key, string value)
        {
            try
            {
                Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
                AppSettingsSection appSection = (AppSettingsSection)config.GetSection("appSettings");
                appSection.Settings[key].Value = value;
                config.Save();

                return "OK";
            }
            catch (Exception ErrMsg)
            {
                return ErrMsg.ToString();
            }
        }
    }

    /// <summary>
    /// 操作 ConnectionStrings 節
    /// </summary>
    public class ConnectionStrings
    {
        /// <summary>
        /// 得到 ConnectionStrings 節的值 傳回null出錯
        /// <para>如 add name="Dbtype" connectionString="0" </para>
        /// <para>如 Get("Dbtype") 得到的值為 0 </para>
        /// <para>傳回null出錯</para>
        /// </summary>
        /// <param name="nodename">節名稱</param>
        /// <returns>節值,傳回null出錯</returns>
        public string Get(string thename)
        {
            try
            {
                return System.Configuration.ConfigurationManager.ConnectionStrings[thename].ConnectionString;
            }
            catch (Exception ErrMsg)
            {
                return null;
            }
        }
    }

    /// <summary>
    /// 操作 customErrors節
    /// <para>此節配置在 customerErrors -> configuration-> system.web 下</para>
    /// <para>如 customErrors defaultRedirect="defaultError.htm" mode="RemoteOnly"</para>
    /// <para></para>
    /// </summary>
    public class CustomError
    {
        /// <summary>
        /// 得到 customErrors 的 Mode 值
        /// </summary>
        /// <returns></returns>
        public string Get_Mode()
        {
            try
            {
                Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
                CustomErrorsSection customErrors = (CustomErrorsSection)config.GetSection("system.web/customErrors");
                int mode = 1;
                switch (customErrors.Mode)
                {
                    case CustomErrorsMode.On:
                        mode = 0;
                        break;
                    case CustomErrorsMode.Off:
                        mode = 1;
                        break;
                    case CustomErrorsMode.RemoteOnly:
                        mode = 2;
                        break;
                    default: break;
                }
                return mode.ToString();
            }
            catch (Exception ErrMsg)
            {
                return ErrMsg.ToString();
            }
        }
        /// <summary>
        /// 設定 Mode 和 跳轉網址
        /// <para>Mode 0: 啟用自定義錯誤。如果未指定 redirecturl,使用者将看到一般性錯誤</para>
        /// </summary>
        /// <param name="thenum">Mode值 0:啟用,1:禁用,2:調試時顯示錯誤</param>
        /// <param name="redirecturl">出錯跳轉位址,""時顯示一般錯誤</param>
        public string Set(int thenum, string redirecturl)
        {
            try
            {
                Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
                CustomErrorsSection customErrors = (CustomErrorsSection)config.GetSection("system.web/customErrors");
                switch (thenum)
                {
                    case 0:
                        customErrors.Mode = CustomErrorsMode.On;
                        break;
                    case 1:
                        customErrors.Mode = CustomErrorsMode.Off;
                        break;
                    case 2:
                        customErrors.Mode = CustomErrorsMode.RemoteOnly;
                        break;
                    default:
                        customErrors.Mode = CustomErrorsMode.Off;
                        break;
                }
                if (redirecturl.Length != 0) { customErrors.DefaultRedirect = redirecturl; }
                config.Save();

                return "OK";
            }
            catch (Exception ErrMsg)
            {
                return ErrMsg.ToString();
            }
        }
    }

}
#endregion