Я использовал ответ спутника, отлично работал в одной тестовой среде IIS, но не в другой.Оказывается, что после того, как вы установили свойство APP_CONFIG_FILE, вам может понадобиться использовать отражение, чтобы прикоснуться к классу ConfigurationManager, чтобы внести изменения.Я использовал эту функцию после установки свойства APP_CONFIG_FILE:
private static void ResetConfiguration()
{
typeof(ConfigurationManager)
.GetField("s_initState", BindingFlags.NonPublic | BindingFlags.Static)
.SetValue(null, 0);
typeof(ConfigurationManager)
.GetField("s_configSystem", BindingFlags.NonPublic | BindingFlags.Static)
.SetValue(null, null);
typeof(ConfigurationManager)
.Assembly.GetTypes()
.Where(x => x.FullName == "System.Configuration.ClientConfigPaths")
.First()
.GetField("s_current", BindingFlags.NonPublic | BindingFlags.Static)
.SetValue(null, null);
}
Помимо этого, вероятно, будет хорошей идеей сначала сохранить свойство, а затем восстановить его, когда вы закончите:
string oldConfigName = AppDomain.CurrentDomain.GetData("APP_CONFIG_FILE").ToString();
//do custom stuff in here
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", oldConfigName); //re-point to the original configuration.
ResetConfiguration();