Как использовать значение appsettings в свойстве раздела web.config - PullRequest
0 голосов
/ 14 февраля 2020

Я хочу использовать значение appsettings в пользовательском разделе web.cofig.

<coredistributedcache factory-class="NHibernate.Caches.CoreDistributedCache.Redis.RedisFactory,NHibernate.Caches.CoreDistributedCache.Redis">
    <properties>
      <property name="configuration">127.0.0.1:6379</property>
    </properties>
  </coredistributedcache>

Я уже определил значение конфигурации в appsetting, как это

<add key="RedisServer" value="127.0.0.1:6379" />

Так что в основном я не хочу жестко кодировать свойство configuration до 127.0.0.1:6379, я хочу установить его как

<property name="configuration">{{RedisServer}}</property>

Возможно ли это?

Или есть какой-то другой способ избежать дублирование

1 Ответ

0 голосов
/ 14 февраля 2020

Конфиги не являются динамическими c. Однако вы можете использовать WebConfigurationManager для манипулирования им.

Этот подход поможет вам, начиная с reference :

var configFile = WebConfigurationManager.OpenWebConfiguration("~");
ClientSettingsSection section = (ClientSettingsSection)configFile.SectionGroups["applicationSettings"].Sections[0];
var value = section.Settings;
SettingElement settingElement = new SettingElement();
SettingValueElement settingValueElement = new SettingValueElement();
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("~/Web.config"));
XmlNodeList nodeList;
XmlNode root = doc.DocumentElement;
nodeList = root.SelectNodes("applicationSettings");
var valuenode = nodeList[0].SelectNodes("coredistributedcache/properties/property")[0];
var oldValue = valuenode.InnerText;
valuenode.InnerText = "New Value1";
settingValueElement.ValueXml = valuenode;
settingElement.Value = settingValueElement;
value.Clear();
value.Add(settingElement);
configFile.Save();
...