如果發布的dll檔案需要配置時,可以考慮把配置資訊轉到app.config,當然也可以不轉移直接使用xxx.dll.config中的配置,當然需要保證程式執行目錄下已經copy有xxx.dll.config檔案了
代碼入下,加入了檔案監視緩衝
View Code
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Configuration;using System.Reflection;using System.IO;using System.Web.Caching;using System.Web;namespace DotNet.A.Core{ public sealed class ModelSetting { public static string GetSetting(string key) { return Assembly.GetExecutingAssembly().Location + ".config"; } public static string GetSetting(string name, string defV) { if (!Config.AppSettings.Settings.AllKeys.Contains(name)) return defV; return Config.AppSettings.Settings[name].Value; } public static string ModelConnString { get { return Config.ConnectionStrings.ConnectionStrings["DBSERP"].ConnectionString; } } public static string ConnString { get { return Config.ConnectionStrings.ConnectionStrings["ConnString"].ConnectionString; } } private static Configuration Config { get { var _Config = HttpRuntime.Cache["_Config"] as Configuration; if (_Config == null ) { var fileMap=new ExeConfigurationFileMap(); fileMap.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + ".config"; _Config= ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); var fileCacheDep = new CacheDependency(fileMap.ExeConfigFilename); System.Web.HttpRuntime.Cache.Add("_Config", _Config, fileCacheDep, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.High, null); } return _Config; } } }}