Я работаю над проектом, который требует от меня изменения файла .config для службы Windows (написанной на ASP.NET), которую я написал. Изменения необходимо внести с административного веб-сайта, который я разрабатываю. Когда пользователь выбирает кнопку «ОБНОВИТЬ» в веб-приложении, выполняется приведенный ниже код:
Protected Sub ModifyAppConfig()
Try
Dim configFile = "C:\App\App.exe.config"
Dim configFileMap As New ExeConfigurationFileMap
configFileMap.ExeConfigFilename = configFile
Dim config As System.Configuration.Configuration
config = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None)
config.AppSettings.Settings("LogDirectory").Value = txtLogDirectory.Text '* EXCEPTION IS THROWN HERE *
config.Save()
Catch ex As Exception
End Try
End Sub
Когда приложение пытается получить доступ к индексу AppSettings LogDirectory, возникает исключение. Object reference not set to an instance of an object.
Во время отладки AppSettings.Count = 0
. Почему ни один из AppSettings не импортируется?
Я знаю, что файл открывается правильно, потому что есть данные ConnectionString. Ниже находится файл конфигурации:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="conn" connectionString="Data Source=DBASE;Initial Catalog=NGDevl;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>
<appSettings>
<add key="LogDirectory" value="C:\CTemp\"/>
</appSettings>
</configuration>
Как я могу получить доступ и изменить значение AppSettings ("LogDirectory")?