需求:

什么时候会用到动态改变Web.config内的值?
在Web.config定义了一个全局设置值A,因为程序运行中满足了某个条件,要将A的值改变

Web.config中定义:

  <appSettings>
<add key="IsChangeDb" value="false"/>
</appSettings>

获取Web.config中指定配置:

//获取web.config中 定义在appSetting中定义的配置
var item = ConfigurationManager.AppSettings["IsChangeDb"]; //根据我自己的需要转换成bool值
bool isChangeDb = string.IsNullOrEmpty(ConfigurationManager.AppSettings["IsChangeDb"]) ? false : bool.Parse(ConfigurationManager.AppSettings["IsChangeDb"]);

代码中更改Web.config中指定配置:


Configuration config=System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
config.AppSettings.Settings.Remove("IsChangeDb");
config.AppSettings.Settings.Add("IsChangeDb", "true");
config.Save();

参考资料:

http://stackoverflow.com/questions/719928/how-do-you-modify-the-web-config-appsettings-at-runtime

出处:https://blog.csdn.net/qq_32452623/article/details/53580093

============================================================================

asp.net2.0新添加了对web.config直接操作的功能。开发的时候有可能用到在web.config里设置配置文件,其实是可以通过程序来设置这些配置节的。

asp.net2.0需要添加引用:

using System.Web.Configuration;

web.config里的配置节:

Code
  <appSettings>
    <add key="FilePath" value="g:\Test\WebConfigManager\Upload\" />
    <add key="p" value="g:\" />
  </appSettings>

(1)读

string filepath = ConfigurationManager.AppSettings["FilePath"];
 
(2)添加
        Configuration config = WebConfigurationManager.OpenWebConfiguration("/WebConfigManager");
        AppSettingsSection app = config.AppSettings;
        app.Settings.Add("p", "p:\\");
        config.Save(ConfigurationSaveMode.Modified);
 
(3)修改
          Configuration config = WebConfigurationManager.OpenWebConfiguration("/WebConfigManager");
            AppSettingsSection app = config.AppSettings;
            app.Settings["p"].Value = @"g:\";
            config.Save(ConfigurationSaveMode.Modified);
 
(4)删除
Configuration config = WebConfigurationManager.OpenWebConfiguration("/WebConfigManager");
        AppSettingsSection app = config.AppSettings;
        app.Settings.Remove("p");
        config.Save(ConfigurationSaveMode.Modified);
 
 
 
注意:
(1)asp.net用户需要有读取、修改、写入的权限。
(2)WebConfigManager是web.config所在的文件夹名。

出处:https://www.cnblogs.com/xxtkong/archive/2011/10/14/2211793.html

==============================================================================

通过从网上的了解,和学习,我们看到ConfigurationManager.OpenMappedExeConfiguration这个方法可以用于打开指定的配置文件,那么看看我们用它来做一些事情吧,下面看代码:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Configuration; namespace PVG.Lib.Configs
{
public class WebConfigHelper
{
/// <summary>
/// 是否加密连接字符串
/// </summary>
public bool IsEncryptionConnection { get; set; } private Configuration config = null;
public Configuration Configuration
{
get { return config; }
set { config = value; }
} public WebConfigHelper()
{
config = WebConfigurationManager.OpenWebConfiguration("~");
} /// <summary>
/// 读取ConnectionStrings
/// </summary>
/// <param name="ConnName"></param>
/// <returns></returns>
public string GetConnectionStrings(string ConnName)
{
string res = "";
if (config != null && config.ConnectionStrings.ConnectionStrings[ConnName] != null)
res = config.ConnectionStrings.ConnectionStrings[ConnName].ConnectionString;
return res;
} public string SetConnectionStrings(string ConnName, string ConnValue)
{
return SetConnectionStrings(ConnName, ConnValue, "");
} public string SetConnectionStrings(string ConnName, string ConnValue, string providerName)
{
if (config != null)
{
if (config.ConnectionStrings.ConnectionStrings[ConnName] != null)
config.ConnectionStrings.ConnectionStrings[ConnName].ConnectionString = ConnValue;
else
config.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings(ConnName, ConnValue, providerName));
config.Save(ConfigurationSaveMode.Modified);
}
if (IsEncryptionConnection)
encryptionConn();//加密配置项
return GetConnectionStrings(ConnName); } public string GetAppSettings(string keyName)
{
string res = "";
if (config != null && config.AppSettings.Settings[keyName] != null)
res = config.AppSettings.Settings[keyName].Value;
return res;
} public string SetAppSettings(string keyName, string keyValue)
{
if (config != null)
{
if (config.AppSettings.Settings[keyName] != null)
config.AppSettings.Settings[keyName].Value = keyValue;
else
config.AppSettings.Settings.Add(keyName, keyValue);
config.Save(ConfigurationSaveMode.Modified);
}
return GetAppSettings(keyName); } private void encryptionConn()
{ ConfigurationSection connectionSection = config.GetSection("connectionStrings");
if (connectionSection != null)
{
connectionSection.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider");
config.Save();
}
} }
}

最新文章

  1. html狂记
  2. 慕课网Java高并发秒杀学习
  3. 访问HTML元素(节点)
  4. django-redis和redis-py
  5. 有关struts2中用到 js 总结
  6. SCSF智能客户端学习笔记(一)
  7. java web项目 。classpath 文件解析
  8. Delphi Unable to invoke Code Completion due to errors in source code
  9. Android Studio代码自己主动提示无效(not available in Power Save mode)
  10. java Static的使用
  11. Erlang/OTP设计原则(文档翻译)
  12. 创建一个dynamics 365 CRM online plugin (七) - plugin当中的Impersonation角色
  13. SpringCloud知识点20190313
  14. M2阶段事后总结
  15. php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
  16. windows多线程同步互斥--总结
  17. vue【指令】
  18. 用jquery监听输入数字的变化
  19. dom操作------创建节点/插入节点
  20. PAT B1045 快速排序 (25 分)

热门文章

  1. sas 变量类型转换
  2. 关于A中用到B, B中用到A的问题
  3. bootstrap table 分页显示问题
  4. 补偿接口中循环一直执行sql的问题
  5. innerHTML和innerText的区别,以及select元素中怎么取出被选中的option。
  6. Chrome浏览器录屏扩展插件
  7. Alpha冲刺2
  8. 【转】Delphi XE10 Android Splash设备自适应和沉浸式状态条
  9. 最新2018年三月可用Windows10激活密钥
  10. 登陆网页模板 - 1 (HTML+CSS)