Как программно добавить элементы местоположения в веб-конфигурацию? - PullRequest
8 голосов
/ 10 октября 2011

У меня есть приложение, которое создает маршруты страниц из базы данных. Весь мой сайт защищен аутентификацией по формам, но мне нужно разрешить неаутентифицированному использованию доступ к этим маршрутам. Я не хочу жестко кодировать теги <location> для маршрутов в web.config, так как это лишит меня возможности использовать базу данных для генерации маршрутов.

Может кто-нибудь помочь?

Ответы [ 4 ]

4 голосов
/ 31 октября 2011

Спасибо всем. Я нашел ответ здесь

По сути, это включает создание папки для каждого маршрута и размещение в ней файла web.config, позволяющего получить доступ. Этот подход должен сочетаться с установкой RouteExistingFiles в false, чтобы маршруты не путались с папками.

1 голос
/ 26 октября 2011

Вместо того, чтобы использовать строго типизированные классы конфигурации, почему бы не внести изменения непосредственно в XML?

Вот сокращенный фрагмент, демонстрирующий из моего кода концепцию производительности IIS-настройки в machine.config. Принципал такой же для других файлов конфигурации XML, хотя. Вам просто нужно создать соответствующие операторы XPath, чтобы делать то, что вам нужно.

XmlDocument machineConfigFile = new XmlDocument();
machineConfigFile.Load(MachineConfigPathString);

XmlNode autoConfig = machineConfigFile.SelectSingleNode(@"/configuration/system.web/processModel/@autoConfig");
autoConfig.Value = "false";

machineConfigFile.Save(MachineConfigPathString);

При сохранении объект XmlDocument сохранит все остальные нетронутые узлы документа. Очень кстати. Это прекрасно работает для изменения machine.config. Единственная возможная проблема, которую я вижу, это то, что ваше приложение, вероятно, будет сброшено при сохранении изменений в файле web.config. Поэтому протестируйте его в безопасной среде с резервной копией файла web.config на тот случай, если сброс приведет к нежелательным последствиям!

0 голосов
/ 25 октября 2011

Рассматривали ли вы вопрос обеспечения безопасности вашего сайта по-другому? Наличие части сайта, которая разрешает доступ без аутентификации, и части, которая не позволяет. Я «предполагаю» (плохо), что вы используете MVC, поскольку вы описываете маршруты - это очень легко сделать как для MVC, так и для традиционных приложений веб-форм.

0 голосов
/ 11 октября 2011

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

...