您现在的位置是:网站首页> 编程资料编程资料
.Net MVC网站中配置文件的读写_实用技巧_
2023-05-24
273人已围观
简介 .Net MVC网站中配置文件的读写_实用技巧_
网站中有很多需要设置的内容,像网站信息,注册设置,上传设置等。如果保存在数据库中需要单独建张表,表中只有一条记录,这样会让数据库很臃肿,而且频繁存取数据库的效率也是个问题。而保存在config文件里是个不错选择,而且带有缓存功能!
我们可以在web.config的配置节写入配置。
但是把大量的配置都写入这里也会造成web.config的臃肿,可以采用把配置节定义在这里,把具体配置信息保存在其他文件中。
以上传配置信息为例,看一下理想的结构

Config\Upload.config的内容

1、配置的元素。采用
2、元素的集合,里面定义一系列的元素。
3、自定义节,表示自定义的一个节点。
name:节点名,type:处理节点的类行,逗号前是类名,逗号后是缩在程序集。
我们要创建这个类来管理配置
一、创建键,值元素类。
里面只有两个读写属性key和value,内容非常简单
using System.Configuration; namespace Ninesky.Models.Config { /// /// 键值元素类 /// /// 创建:2014.03.09 /// /// public class KeyValueElement:ConfigurationElement { /// /// 键 /// [ConfigurationProperty("key",IsRequired=true)] public string Key { get { return this["key"].ToString(); } set { this["key"] = value; } } /// /// 值 /// [ConfigurationProperty("value")] public string Value { get { return this["value"].ToString(); } set { this["value"] = value; } } } } 二、创建元素集合类。内容很简单都进行了注释
using System; using System.Configuration; namespace Ninesky.Models.Config { /// /// 元素集合类 /// /// 创建:2014.03.09 /// /// [ConfigurationCollection(typeof(KeyValueElement))] public class KeyValueElementCollection:ConfigurationElementCollection { //忽略大小写 public KeyValueElementCollection() : base(StringComparer.OrdinalIgnoreCase) { } /// /// 集合中指定键的元素 /// /// /// new public KeyValueElement this[string name] { get { return (KeyValueElement)base.BaseGet(name); } set { if (base.Properties.Contains(name)) base[name] = value; else base.BaseAdd(value); } } /// /// 创建新元素. /// 必须重写 /// /// protected override ConfigurationElement CreateNewElement() { return new KeyValueElement(); } /// /// 获取元素的键 /// /// /// protected override object GetElementKey(ConfigurationElement element) { return ((KeyValueElement)element).Key; } } } 三、配置节类
类中定义私有属性KeyValues。进行读写配置节集合,然后定义一系列的需要的配置属性,操作就是对KeyValues的元素读写。
using System.Configuration; namespace Ninesky.Models.Config { /// /// 上传设置配置节 /// /// 创建:2014.03.09 /// /// public class UploadConfig:ConfigurationSection { private static ConfigurationProperty _property = new ConfigurationProperty(string.Empty, typeof(KeyValueElementCollection), null, ConfigurationPropertyOptions.IsDefaultCollection); /// /// 配置列表 /// [ConfigurationProperty("", Options = ConfigurationPropertyOptions.IsDefaultCollection)] private KeyValueElementCollection KeyValues { get { return (KeyValueElementCollection)base[_property]; } set { base[_property] = value; } } /// /// 最大大小 /// public int MaxSize { get { int _value =0; if (KeyValues["MaxSize"] != null) int.TryParse(KeyValues["MaxSize"].Value, out _value); return _value; } set { if (KeyValues["MaxSize"] == null) KeyValues["MaxSize"] = new KeyValueElement() { Key = "MaxSize", Value = value.ToString() }; else KeyValues["MaxSize"].Value = value.ToString(); } } /// /// 上传目录 /// 为应用程序目录起的文件夹名,前面不带~/ /// public string Path { get { if (KeyValues["Path"] == null) return "Upload"; return KeyValues["Path"].Value; } set { if (KeyValues["Path"] == null) KeyValues["Path"] = new KeyValueElement() { Key = "Path", Value = value }; else KeyValues["Path"].Value = value; } } /// /// 允许上传的图片类型文件扩展,多个用“,”隔开 /// public string ImageExt { get { if (KeyValues["ImageExt"] == null) return string.Empty; return KeyValues["ImageExt"].Value; } set { if (KeyValues["ImageExt"] == null) KeyValues["ImageExt"] = new KeyValueElement() { Key = "ImageExt", Value = value }; else KeyValues["ImageExt"].Value = value; } } /// /// 允许上传的Flash类型文件扩展,多个用“,”隔开 /// public string FlashExt { get { if (KeyValues["FlashExt"] == null) return string.Empty; return KeyValues["FlashExt"].Value; } set { if (KeyValues["FlashExt"] == null) KeyValues["FlashExt"] = new KeyValueElement() { Key = "FlashExt", Value = value }; else KeyValues["FlashExt"].Value = value; } } /// /// 允许上传的媒体类型文件扩展,多个用“,”隔开 /// public string MediaExt { get { if (KeyValues["MediaExt"] == null) return string.Empty; return KeyValues["MediaExt"].Value; } set { if (KeyValues["MediaExt"] == null) KeyValues["MediaExt"] = new KeyValueElement() { Key = "MediaExt", Value = value }; else KeyValues["MediaExt"].Value = value; } } /// /// 允许上传的文件类型文件扩展,多个用“,”隔开 /// public string FileExt { get { if (KeyValues["FileExt"] == null) return string.Empty; return KeyValues["FileExt"].Value; } set { if (KeyValues["FileExt"] == null) KeyValues["FileExt"] = new KeyValueElement() { Key = "FileExt", Value = value }; else KeyValues["FileExt"].Value = value; } } } } 四、读取配置
也是最关系的,配置信息怎么读出来。在上面类写好后读取非常容易了,只需用WebConfigurationManager.OpenWebConfiguration("~"). GetSection()获取配置节的实例,局可以使用属性值了
var _uploadConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~").GetSection("UploadConfig") as Ninesky.Models.Config.UploadConfig; //文件最大限制 int _maxSize = _uploadConfig.MaxSize; //文件路径 string _fileParth = _uploadConfig.Path ; string _dirName; //允许上传的类型 Hashtable extTable = new Hashtable(); extTable.Add("image", _uploadConfig.ImageExt); extTable.Add("flash", _uploadConfig.FileExt); extTable.Add("media", _uploadConfig.MediaExt); extTable.Add("file", _uploadConfig.FileExt); 五、写入配置
跟读取类似,把属性值设置后save()一下,内容就会保存到Config\Upload.config中。
代码如下:
var _uploadConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~").GetSection("UploadConfig") as Ninesky.Models.Config.UploadConfig; //文件最大限制 int _maxSize = _uploadConfig.MaxSize; _uploadConfig.FileExt = "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2"; _uploadConfig.FlashExt = "swf,flv"; _uploadConfig.ImageExt = "gif,jpg,jpeg,png,bmp"; _uploadConfig.MediaExt = "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb"; _uploadConfig.Path = "Upload"; _uploadConfig.CurrentConfiguration.Save(); 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- ASP.NET MVC5网站开发之网站设置(九)_实用技巧_
- ASP.NET MVC结合JavaScript登录、校验和加密_实用技巧_
- java selenium智能等待页面加载完成示例代码_实用技巧_
- asp.net下的异步加载_实用技巧_
- 微信公众号支付(MVC版本)_实用技巧_
- 拥有网页版小U盘 ASP.NET实现文件上传与下载功能_实用技巧_
- ASP.NET中GridView的文件输出流方式_实用技巧_
- ASP.NET MVC4中使用Html.DropDownListFor的方法示例_实用技巧_
- ASP.NET Razor模板引擎中输出Html的两种方式_实用技巧_
- ASP.NET MVC中使用JavaScriptResult的用法示例_实用技巧_
