Обновление AppSettings с помощью ASP.NET Контроллер MVC

AWK

#!/usr/bin/awk -f
{
    result=1;
    for(i=$1;i>0;i--){
        result=result*i;
    }
    print result;
}
11
задан Keith Williams 16 November 2009 в 23:16
поделиться

3 ответа

Измените вашу первую строку на это:

var config = WebConfigurationManager.OpenWebConfiguration("~");

Каким бы запутанным это ни было, OpenWebConfiguration ожидает виртуальный путь, по которому находится Web.config, исключая имя файла. Я предполагаю, что логика заключается в том, что в любом заданном каталоге будет только один Web.config, поэтому указывать имя не нужно.

Документация MSDN в конечном итоге подсказывает нам, что здесь - если вы посмотрите на примеры, они все используют явные относительные пути, а при размещении под IIS позволяют указывать файлы конфигурации из других мест, например:

OpenWebConfiguration("/siteName", "Default Web Site", null, "myServer");

Дополнение:

Итак, почему OpenWebConfiguration ("~ / Web.config") работать вообще? Я не уверен, что смогу окончательно объяснить это, но попробуйте это для удовольствия: измените его на ("~ / Foo.bar") . Тот же результат! Вы можете читать - тот же файл Web.config - но не можете писать! (теперь попробуйте добавить каталог foo.bar на свой сайт, а затем поместите в него Web.config ...)

Поскольку OpenWebConfiguration ожидает каталог (и, по-видимому, разрешает несуществующие, если он находит Web. config внутри родительского), я думаю, именно поэтому ошибочное указание ~ / Web.config в качестве «пути» позволяет нам загружать корневую конфигурацию, но не сохранять ее.

но не экономить.

но не экономить.

19
ответ дан 3 December 2019 в 05:58
поделиться

Если вы запускаете это из другого проекта, тогда вы будете использовать конфигурацию из этой папки, в которой не будет файла конфигурации, следовательно, возникнет ошибка, что он не может быть создан.

Вы можете захотеть использовать server.mappath или что-то подобное для доступа к файлу конфигурации веб-папок.

0
ответ дан 3 December 2019 в 05:58
поделиться

Try this:

var configFile = HttpContext.Current.Server.MapPath("~/Web.config");
var config = WebConfigurationManager.OpenWebConfiguration(configFile);

However, I think it is a bad idea to store this kind of information in the Web.Config, especially if it is intended to be changed dynamically.

Even if you plan to use a separate config file, I would rather store this in another way, and I wouldn't bother to get my own configuration through System.Configuration's classes. They are mostly meant to read ASP.NET apps' Web.Config and Windows apps' App.Config, and making them work with something else is really pointless.

I recommend the following:

Add a separate XML file to your project. (preferably to the App_Data folder, where it can't be accessed from the web, and where your application already has read and write permissions.)

You can then store this sort of settings in that XML, and easily read and write it using System.Xml or LINQ to XML.

1
ответ дан 3 December 2019 в 05:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: