国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - .Net MVC網站中配置文件的讀寫

.Net MVC網站中配置文件的讀寫

2020-03-19 14:39洞庭夕照 ASP.NET教程

這篇文章主要為大家詳細介紹了.Net MVC 網站中配置文件的讀寫,感興趣的小伙伴們可以參考一下

網站中有很多需要設置的內容,像網站信息,注冊設置,上傳設置等。如果保存在數據庫中需要單獨建張表,表中只有一條記錄,這樣會讓數據庫很臃腫,而且頻繁存取數據庫的效率也是個問題。而保存在config文件里是個不錯選擇,而且帶有緩存功能! 

我們可以在web.config的配置節寫入配置。 

?
1
2
3
4
5
6
<configuration>
 <configSections>
 <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
 <!--這里可以定義配置節 -->
 <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
 </configSections>

但是把大量的配置都寫入這里也會造成web.config的臃腫,可以采用把配置節定義在這里,把具體配置信息保存在其他文件中。 

以上傳配置信息為例,看一下理想的結構 

.Net MVC網站中配置文件的讀寫

Config\Upload.config的內容 

.Net MVC網站中配置文件的讀寫

1、配置的元素。采用<add />的形式,是一個鍵和值得表示形式。<add key="MaxSize" value="1500000" />。 
2、元素的集合,里面定義一系列的元素。<UploadConfig>……</UploadConfig> 
3、自定義節,表示自定義的一個節點。<section name="UploadConfig"  type="Ninesky.Models.Config.UploadConfig, Ninesky.Models"/> 

name:節點名,type:處理節點的類行,逗號前是類名,逗號后是縮在程序集。

我們要創建這個類來管理配置 

一、創建鍵,值元素類。

里面只有兩個讀寫屬性key和value,內容非常簡單 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System.Configuration;
 
namespace Ninesky.Models.Config
{
 /// <summary>
 /// 鍵值元素類
 /// <remarks>
 /// 創建:2014.03.09
 /// </remarks>
 /// </summary>
 public class KeyValueElement:ConfigurationElement
 {
  /// <summary>
  /// 鍵
  /// </summary>
  [ConfigurationProperty("key",IsRequired=true)]
  public string Key {
   get { return this["key"].ToString(); }
   set { this["key"] = value; }
  }
  /// <summary>
  /// 值
  /// </summary>
  [ConfigurationProperty("value")]
  public string Value
  {
   get { return this["value"].ToString(); }
   set { this["value"] = value; }
  }
 }
}

二、創建元素集合類。內容很簡單都進行了注釋 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System;
using System.Configuration;
 
namespace Ninesky.Models.Config
{
 /// <summary>
 /// 元素集合類
 /// <remarks>
 /// 創建:2014.03.09
 /// </remarks>
 /// </summary>
 [ConfigurationCollection(typeof(KeyValueElement))]
 public class KeyValueElementCollection:ConfigurationElementCollection
 {
  //忽略大小寫
  public KeyValueElementCollection() : base(StringComparer.OrdinalIgnoreCase) { }
  /// <summary>
  /// 集合中指定鍵的元素
  /// </summary>
  /// <param name="name"></param>
  /// <returns></returns>
  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);
   }
  }
  /// <summary>
  /// 創建新元素.
  /// 必須重寫
  /// </summary>
  /// <returns></returns>
  protected override ConfigurationElement CreateNewElement()
  {
   return new KeyValueElement();
  }
  /// <summary>
  /// 獲取元素的鍵
  /// </summary>
  /// <param name="element"></param>
  /// <returns></returns>
  protected override object GetElementKey(ConfigurationElement element)
  {
   return ((KeyValueElement)element).Key;
  }
 }
}

三、配置節類

類中定義私有屬性KeyValues。進行讀寫配置節集合,然后定義一系列的需要的配置屬性,操作就是對KeyValues的元素讀寫。 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
using System.Configuration;
 
namespace Ninesky.Models.Config
{
 /// <summary>
 /// 上傳設置配置節
 /// <remarks>
 /// 創建:2014.03.09
 /// </remarks>
 /// </summary>
 public class UploadConfig:ConfigurationSection
 {
  private static ConfigurationProperty _property = new ConfigurationProperty(string.Empty, typeof(KeyValueElementCollection), null, ConfigurationPropertyOptions.IsDefaultCollection);
  /// <summary>
  /// 配置列表
  /// </summary>
  [ConfigurationProperty("", Options = ConfigurationPropertyOptions.IsDefaultCollection)]
  private KeyValueElementCollection KeyValues
  {
   get { return (KeyValueElementCollection)base[_property]; }
   set { base[_property] = value; }
  }
  /// <summary>
  /// 最大大小
  /// </summary>
  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();
   }
  }
 
  /// <summary>
  /// 上傳目錄
  /// 為應用程序目錄起的文件夾名,前面不帶~/
  /// </summary>
  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;
   }
  }
 
  /// <summary>
  /// 允許上傳的圖片類型文件擴展,多個用“,”隔開
  /// </summary>
  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;
   }
  }
 
  /// <summary>
  /// 允許上傳的Flash類型文件擴展,多個用“,”隔開
  /// </summary>
  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;
   }
  }
 
  /// <summary>
  /// 允許上傳的媒體類型文件擴展,多個用“,”隔開
  /// </summary>
  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;
   }
  }
 
  /// <summary>
  /// 允許上傳的文件類型文件擴展,多個用“,”隔開
  /// </summary>
  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()獲取配置節的實例,局可以使用屬性值了 

?
1
2
3
4
5
6
7
8
9
10
11
12
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中。 

代碼如下: 

?
1
2
3
4
5
6
7
8
9
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();

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/mzwhj/p/3589887.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 最近韩国日本免费高清观看 | 一级黄色片欧美 | www.欧美日韩 | 亚洲伦理| 亚洲字幕 | 国内精品一区二区 | 九九热精品视频在线观看 | 91久久精品国产91久久 | 日本欧美国产 | 欧美天堂一区二区三区 | 久久久久久亚洲精品 | 国产亲子乱弄免费视频 | 亚洲精品视频在线 | 色偷偷噜噜噜亚洲男人的天堂 | 二区在线观看 | 亚洲人成免费网站 | 国产精选一区二区三区不卡催乳 | 久草在线视频免费播放 | 亚洲一区中文字幕在线观看 | 色8888www视频在线观看 | 国产91久久精品一区二区 | 国产精品99久久久久久宅男 | 一区二区三区精品 | 日韩在线观看中文字幕 | 日韩中文字幕一区二区高清99 | 午夜精品成人一区二区 | 日韩精品一区二区三区在线 | 国内精品视频 | 先锋资源网av | 亚洲视频一区二区三区 | 午夜精品久久久久久久99黑人 | 久久国产精品久久 | 99热首页| 免费成人黄色大片 | 亚洲精品视频在线观看免费视频 | 龙珠z普通话国语版在线观看 | 亚洲精品久久久久久久久久久久久 | 7878www免费看片 | 91av入口| 12306影视午夜入口 | 能看的av网站 |