Dry*_*ods 5 asp.net app-config web-config
ConnectionStrings和一些其他设置(<appSettings> <add key...).Web.configApp.configWeb应用程序使用工厂模式直接注入读取数据提供者.
在web.config我有密钥告诉我将使用哪个DLL(提供程序)来检索我的数据.
我可以有多个提供程序(每个DLL将是MS SQL,MySQL的提供程序,或从某些SOA服务获取数据).
每个DLL都有自己的名称(ID和名称空间),并且需要拥有自己的配置(dataconnections,service urls等...),第一个想法就是写入
app.config.
#1 - 网站正在运行(运行时)我需要更改数据提供者,我该怎么做?不知何故,写入的默认值Web.config将被更改.
.
#2 - 每个数据提供者都有自定义配置,而App.Config文件不适用于dll程序集,只能用于可执行文件.这意味着我需要在我的Web.Config上编写(我不喜欢这个选项,因为我再次在运行时更新我的web.config).我该怎么解决这个问题?
DLL和DLL.config每每个供应商.并且在运行时期间我可能需要更改此配置值..
好的,当我在等待一些帮助时,我把手放在上班,我能找到一个好的解决方案(当然我认为:P).
让我与大家分享一下:
所以,我有一个Web应用程序,或一个控制台应用程序,或其他类型的应用程序,以及许多类库,我需要存储将在运行时更改的信息(每个Visual Studio项目不同).
将这些信息存储在Web.config或App.config不是一个好主意,因为它需要解决许多问题.
我看到的另一种方法是每个项目都有一个XML配置文件.
每个应用程序都将读取自己的XML并将其添加到缓存中CacheDependency(将在XML配置文件更新时过期).这样我们就不需要一直读取配置,并且我们也知道配置何时更改.
IMO THIS IS THE FASTEST AND EASIEST WAY TO SOLVE THE PROBLEM,不需要使用第三方框架(既不需要学习/编程它的时间).
.
protected void Page_Load(object sender, EventArgs e)
{
DBConfiguration cachConf;
cachConf = Cache["cachConf"] as DBConfiguration;
if (cachConf == null)
{
cachConf = new DBConfiguration();
XmlDocument doc = new XmlDocument();
doc.Load(HttpContext.Current.Request.PhysicalApplicationPath + "bin/MyConf.xml");
XmlNodeList xnl = doc.GetElementsByTagName("username");
XmlElement xe = (XmlElement)xnl[0];
cachConf.Username = xe.InnerText.ToString();
xnl = doc.GetElementsByTagName("password");
xe = (XmlElement)xnl[0];
cachConf.Password = xe.InnerText.ToString();
Cache.Insert("cachConf", cachConf,
new System.Web.Caching.CacheDependency(
HttpContext.Current.Request.PhysicalApplicationPath + "MyConf.xml"),
DateTime.Now.AddMinutes(60), TimeSpan.Zero,
System.Web.Caching.CacheItemPriority.Default,
new System.Web.Caching.CacheItemRemovedCallback(
CacheItemRemovedCallBack));
}
LabelUsername.Text = cachConf.Username;
LabelPassword.Text = cachConf.Password;
}
private void CacheItemRemovedCallBack(string key, object value, CacheItemRemovedReason reason)
{
//Response.Write("Hello world");
}
Run Code Online (Sandbox Code Playgroud)
您可以将凭据存储在从 web.config 引用的辅助配置文件中,如下所示:
<appSettings file="AppSettings.config"/>
Run Code Online (Sandbox Code Playgroud)
您仍然需要小心避免外部文件上的编辑冲突。
| 归档时间: |
|
| 查看次数: |
8407 次 |
| 最近记录: |