Как сохранить настройки в файл web.config? - PullRequest
2 голосов
/ 09 ноября 2010

Я использую приложение динамического веб-сайта Asp.net и не могу сохранить конфигурации в файл web.config.

Я пробовал что-то подобное, но не работает!

 var configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");

        configuration.AppSettings.Settings["Value"].Value = "Some value";
        configuration.Save();

Ошибка, с которой я столкнулся

1. OpenWebConfiguration(Server.MapPath(".")) & OpenWebConfiguration(Server.MapPath("~"):

The relative virtual path 'C:/...' is not allowed here.

2. OpenWebConfiguration("~")

    An error occurred loading a configuration file: Failed to map the path '/'.

Я действительно не знаю, что делать дальше.

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

В документации указано, что передача нулевого значения пути откроет файл web.config по умолчанию.
Глядя на ваш код, вы не видите, что вы на самом деле указываете имя файла конфигурации в вашем пути.

Так что используйте:

    OpenWebConfiguration(null)

РЕДАКТИРОВАТЬ: ОК. Я провел дальнейшее расследование, и при передаче значения null откроется файл web.config сервера по умолчанию в папке C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Config, что в данном случае не то, что вам нужно.
Передача "~" должна дать вам доступ к файлу web.config по умолчанию для веб-приложений, и я успешно проверил это в Visual Studio 2008 с .NET 3.5, используя следующий код:

    Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
    config.AppSettings.Settings["test"].Value = "Hello";
    config.Save();

Я не уверен, почему это не работает в вашем случае. Я бы предложил разместить точку останова в строке кода, где вы создаете свой объект конфигурации и используете «Непосредственное окно» в IDE Visual Studio, чтобы вызвать статический метод OpenWebConfiguration WebConfigurationManager, чтобы увидеть, какой результат вы можете получить. Если вы введете что-то вроде WebConfigurationManager.OpenWebConfiguration("~").AppSettings.Settings.AllKeys, это будет означать, что вы успешно обращаетесь к web.config.

0 голосов
/ 04 августа 2016

Используйте код ниже.

configuration.Save(ConfigurationSaveMode.Full, true);
...