今天就跟大家聊聊有关怎么在.Net MVC中读写配置文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

我们可以在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();看完上述内容,你们对怎么在.Net MVC中读写配置文件有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。