zoukankan      html  css  js  c++  java
  • Asp.Net 常用工具类---Config操作(7)

       

      近期工作比较忙,忙到忘记写博客(自己的借口,主要加班下班后不想动)。

      月初的时候,打算每两天写一篇博文,分享自己的一些心得和开发体验,无奈现在只写到第六篇,然而时间已经是20号,岁月不饶人!

      总想写点什么,但是有时候文笔可能不咋样,排版也不是很讲究,写的碎碎的。

      虽然阅读量、推荐量不高,但是我感觉做事就要持之以恒,保持分享精神

      


      上一篇写了一些office的操作,包括excel  word  html  pdf,现在想想,确实有点粗糙,不够精炼。

      今天准备写一篇关于config文件的基本操作,包括:链接字符串,appSettings操作,运行地址等等。

      大家都知道,有时候一些sdk信息账户为了可配置化,除了存库以外,webconfig的配置更能方便简介,且容易维护!

      

      下面贴出我的帮助类(借鉴了cyqdata的帮助类,然后做了一些修改):

      

      

    using System;
    using System.Configuration;
    using System.Web;
    using System.Collections.Generic;
    using System.Reflection;
    
    namespace Utils.Config
    {
        /// <summary>
        /// 配置文件
        /// </summary>
        public static class Config
        {
            /// <summary>
            /// 配置字典
            /// </summary>
            public static readonly Dictionary<string, string> Configs = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
    
            /// <summary>
            /// 链接字符串配置字典
            /// </summary>
            public static readonly Dictionary<string, string> ConnConfigs = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
    
            /// <summary>
            /// 文件路径前缀
            /// </summary>
            public const string FilePre = "file:\";
    
            /// <summary>
            /// 框架的运行路径
            /// </summary>
            public static string RunfolderPath;
    
            /// <summary>
            ///  框架程序集名称
            /// </summary>
            public static string DllFullName;
    
            /// <summary>
            /// 链接字符串
            /// </summary>
            public static string _defaultConn;
    
            /// <summary>
            /// 获取当前Dll的版本号
            /// </summary>
            public static string Version => Assembly.GetExecutingAssembly().GetName().Version.ToString();
    
            /// <summary>
            /// Web根目录
            /// </summary>
            public static string WebRootPath => AppDomain.CurrentDomain.BaseDirectory;
    
            /// <summary>
            /// 浏览器地址 (协议名+域名+站点名+文件名+参数)
            /// </summary>
            public static Uri WebUr => HttpContext.Current.Request.Url;
    
            /// <summary>
            /// 框架的运行路径
            /// </summary>
            public static string RunPath
            {
                get
                {
                    if (string.IsNullOrEmpty(RunfolderPath))
                    {
                        Assembly ass = Assembly.GetExecutingAssembly();
                        DllFullName = ass.FullName;
                        RunfolderPath = ass.CodeBase;
                        RunfolderPath = System.IO.Path.GetDirectoryName(RunfolderPath).Replace(FilePre, string.Empty) + "\";
                    }
                    return RunfolderPath;
                }
            }
    
            /// <summary>
            /// 设置Web.config或App.config的值。
            /// </summary>
            public static void SetApp(string key, string value)
            {
                try
                {
                    if (Configs.ContainsKey(key))
                        Configs[key] = value;
                    else
                        Configs.Add(key, value);
                }
                catch (Exception err)
                {
                    Log.Log.Txt(err);
                }
            }
            /// <summary>
            /// 获取Web.config或App.config的值。
            /// </summary>
            public static string GetApp(string key)
            {
                return GetApp(key, string.Empty);
            }
    
            /// <summary>
            /// 获取Web.config或App.config的值(允许值不存在或为空时输出默认值)。
            /// </summary>
            public static string GetApp(string key, string defaultValue, string filepath = "")
            {
                if (Configs.ContainsKey(key))
                    return Configs[key];
                else if (!string.IsNullOrEmpty(filepath))
                {
                    ExeConfigurationFileMap ecf = new ExeConfigurationFileMap();
                    ecf.ExeConfigFilename = filepath;
                    Configuration config = ConfigurationManager.OpenMappedExeConfiguration(ecf, ConfigurationUserLevel.None);
                    return config.AppSettings.Settings[key].Value;
                }
                else
                {
                    string value = ConfigurationManager.AppSettings[key];
                    value = string.IsNullOrEmpty(value) ? defaultValue : value;
                    try
                    {
                        Configs.Add(key, value);
                    }
                    catch (Exception err)
                    {
                        Log.Log.Txt(err);
                    }
                    return value;
                }
            }
    
            /// <summary>
            /// 获取Web.config或App.config的数字值(允许值不存在或为空时输出默认值)。
            /// </summary>
            public static int GetAppInt(string key, int defaultValue)
            {
                int result;
                string value = GetApp(key);
                if (!int.TryParse(value, out result))
                    return defaultValue;
                return result;
            }
    
            /// <summary>
            /// 获取Web.config或App.config的数字值(允许值不存在或为空时输出默认值)。
            /// </summary>
            public static bool GetAppBool(string key, bool defaultValue)
            {
                bool result;
                bool.TryParse(GetApp(key, defaultValue.ToString()), out result);
                return result;
            }
    
            /// <summary>
            /// 获取Web.config或App.config的connectionStrings节点的值。
            /// </summary>
            public static string GetConn(string name, out string providerName)
            {
                providerName = string.Empty;
                if (string.IsNullOrEmpty(name))
                    name = "Default";
                if (name.Trim().Contains(" "))
                    return name;
                if (ConnConfigs.ContainsKey(name))
                    return ConnConfigs[name];
                ConnectionStringSettings conn = ConfigurationManager.ConnectionStrings[name];
                if (conn != null)
                {
                    providerName = conn.ProviderName;
                    if (name == conn.ConnectionString)//避免误写自己造成死循环。
                        return name;
                    name = conn.ConnectionString;
                    if (!string.IsNullOrEmpty(name) && name.Length < 32 && name.Split(' ').Length == 1)
                        return GetConn(name);
                    if (!ConnConfigs.ContainsKey(name) && string.IsNullOrEmpty(providerName)) // 如果有providerName,则不存档
                        ConnConfigs.Add(name, conn.ConnectionString);
                    return conn.ConnectionString;
                }
                if (name.Length > 32 && name.Split('=').Length > 3 && name.Contains(";")) //链接字符串很长,没空格的情况
                    return name;
                return "";
            }
    
            /// <summary>
            /// 获取Web.config或App.config的connectionStrings节点的值。
            /// </summary>
            public static string GetConn(string name)
            {
                string p;
                return GetConn(name, out p);
            }
    
            /// <summary>
            /// 添加自定义链接(内存有效,并未写入config文件)
            /// </summary>
            /// <param name="name">名称</param>
            /// <param name="connectionString">链接字符串</param>
            public static void SetConn(string name, string connectionString)
            {
                if (!ConnConfigs.ContainsKey(name))
                    ConnConfigs.Add(name, connectionString);
                else
                    ConnConfigs[name] = connectionString;
            }
    
            /// <summary>
            /// 获取URL
            /// </summary>
            public static string Url
            {
                get
                {
                    string pageUrl = string.Empty;
                    if (HttpContext.Current != null)
                    {
                        HttpRequest request = HttpContext.Current.Request;
                        if (request.UrlReferrer != null && request.Url != request.UrlReferrer)
                            pageUrl = request.Url.Scheme + "://" + request.Url.Authority + request.RawUrl + request.UrlReferrer;
                        else
                            pageUrl = request.Url.Scheme + "://" + request.Url.Authority + request.RawUrl;
                    }
                    return pageUrl;
                }
            }
    
            /// <summary>
            /// 数据库链接字符串
            /// </summary>
            public static string DefaultConn
            {
                get
                {
                    if (string.IsNullOrEmpty(_defaultConn))
                    {
                        _defaultConn = "Defalut";
                        if (ConfigurationManager.ConnectionStrings != null && ConfigurationManager.ConnectionStrings[_defaultConn] == null)
                        {
                            foreach (ConnectionStringSettings item in ConfigurationManager.ConnectionStrings)
                            {
                                if (item.Name.ToLower().EndsWith("Defalut"))
                                {
                                    _defaultConn = item.Name;
                                    break;
                                }
                            }
                        }
                    }
    
                    return _defaultConn;
                }
                set
                {
                    if (value == null)
                        value = string.Empty;
                    _defaultConn = value;
    
                }
            }
    
            /// <summary>
            /// 生成一个文件夹路径
            /// </summary>
            /// <param name="foldername">文件夹名称</param>
            /// <param name="configkey">config配置key</param> 
            public static string GenerateFilePath(string foldername, string configkey = "")
            {
                string path = GetApp(configkey, foldername);
                if (!path.EndsWith("\"))
                    path = path.TrimEnd('/');
                if (path.StartsWith("~/"))
                    path = path.Substring(2);
    
                string folder = Config.WebRootPath;
                folder = folder + path + @"";
    
                if (!System.IO.Directory.Exists(folder))
                    System.IO.Directory.CreateDirectory(folder);
                return folder;
            }
        }
    }

    OK,各位看官,这一期的文章config操作写到这里喏,感谢大家的支持,您的支持是我的动力!

    下一期给大家带来的是常用的Log帮助类,敬请期待!!!

      

  • 相关阅读:
    Zero-Copy&sendfile浅析
    Redis数据清除问题
    Redis官方文档》持久化
    GNU C 、ANSI C、标准C、标准c++区别和联系
    有关jQuery valid 验证多个同name属性的input的问题
    jQuery validator 增加多个模板
    archiver error. Connect internal only, until freed. 之解决办法
    链接ftp,把文件或图片上传到ftp指定的文件夹中
    java 数字金额转换中文金额
    java工具类 --千分位方法
  • 原文地址:https://www.cnblogs.com/heimalang/p/6586011.html
Copyright © 2011-2022 走看看