Пользовательский раздел / коллекция в Web.Config - PullRequest
9 голосов
/ 12 октября 2011

У меня есть несколько маршрутов, которые я хочу использовать в своем файле Web.Config.Мне нужен один ключ и два поля значения для каждого раздела / элемента в коллекции.Что-то вроде этого ...

<routes>
    <add
        key="AdministrationDefault"
        url="Administration/"
        file="~Administration/Default.aspx" />

    <add
        key="AdministrationCreateCampaign"
        url="Administration/CreateCampaign/"
        file="~/Administration/CreateCampaign.aspx" />

    <add
        key="AdministrationLogout"
        url="Administration/Leave/"
        file="~/Administration/Leave.aspx" />
</routes>

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

Ответы [ 3 ]

7 голосов
/ 12 октября 2011
2 голосов
/ 10 апреля 2017

Если вы не хотите создавать класс для представления раздела конфигурации, вы можете сделать это:

var configSection = ConfigurationManager.GetSection("sectionGroup/sectionName");
var aValue = (configSection as dynamic)["ValueKey"];

Преобразование в динамическое позволяет получить доступ к значениям ключа в configSection.Возможно, вам придется добавить точку останова и пик в configSection, чтобы увидеть, что там есть и какой ValueKey использовать.

2 голосов
/ 12 октября 2011

Да. И не слишком сложно, как только вы начнете.

Вам потребуется создать производный класс ConfigurationSection, чтобы определить раздел <routes> (а затем добавить <section> в конфигурацию, чтобы связать элемент <routes> с вашим типом).

Затем вам потребуется тип для определения каждого элемента коллекции и, помеченное как значение по умолчанию, свойство второго типа для коллекции.

После того, как все это настроено, во время выполнения вы получаете доступ к разделу конфигурации как:

var myRoutes = ConfigurationManager.GetSection("routes") as RoutesConfigSection;

В моем блоге есть несколько статей на эту тему: http://blog.rjcox.co.uk/category/dev/net-core/

Как отмечено в другом ответе , на MSDN также есть покрытие (намного лучше, чем раньше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...