2014-10-03 3 views
2

Я бродил по интернету, чтобы выяснить, какое лучшее решение для моей проблемы будет, но я не могу найти удовлетворительный ответ.Программируемое изменение в вашем web.config в выпуске release

Моя проблема заключается в том, что я хочу, чтобы администратор моего веб-сайта мог изменить настройки сервера (адрес электронной почты, пароль и URL-адрес конечной точки сервера Exchange) - это должно быть возможно сделать в браузере, поэтому администратор не делает должен открыть файл web.config. Настройки редко устанавливаются, но возможность для него должна присутствовать.

Что мне теперь делать, что, как только администратор заполняет мою форму, мой контроллер установит новые значения в web.config AppSettings:

<appSettings> 
     <add key="ewsUser" value="[email protected]" /> 
     <add key="ewsPW" value="somePW" /> 
     <add key="ewsUrl" value="https://outlook.ews.com/xxx.asmx" /> 
    </appSettings> 

Это где начинается моя большая проблема, из-за все мои исследования через Интернет. Допустим, что мое приложение сейчас в сети и используется сотнями людей 24/7, будет ли это решение проблемой? Я читал, что если вы внесете изменения в свой файл web.config, он запустит ваше приложение на сервере, не отбрасывая всех клиентов. Но повлияет ли это на сеанс, когда клиенты находятся в правильном положении в тот момент? Будет ли сервер забывать о своих сеансах?

Я немного читал о плохих практиках, и this article заявляет, как его можно решить, создав новый файл .config и связавшись с этим файлом конфигурации в файле настроек web.config AppSettings. Но действительно ли это необходимо? Я считаю это немного более грязным, чем мое текущее решение.

Любые идеи, мысли и/или факты были бы оценены.

ответ

0

Письмо на web.config действительно плохой практике. При изменении файла web.config ваше приложение перезапустится. Не уверены в сеансах, но они, вероятно, будут сброшены. А как насчет ситуации, когда вы развертываете новую версию своего приложения и случайно перезаписываете web.config? Два решения, которые могут быть полезны:

  • Создание простой таблицы ключ/значение в базе данных
  • Создайте свой собственный формат XML и записи/чтения в файл (и имя файла для примера mysettings.config вместо mysettings.xml, чтобы предотвратить прямой доступ из веб-браузера)

Чтобы ускорить работу, вы можете кэшировать эти значения в памяти после чтения.

+0

Благодарим вас за ответ Marthijn - ваши два решения были также в моем «ведре выбора». Теперь для последующего вопроса. Какое из вышеперечисленных решений будет самым трудным для взлома? Имейте в виду, что данные в базе данных будут зашифрованы и засолены (по крайней мере, пароль). – Adam

+1

Зависит, если у вас уже есть база данных, это, вероятно, самый простой. XML не так уж и трудный, просто используйте сериализацию, и .NET обработает его. Я также должен зашифровать пароль в файле XML. – Marthijn

Смежные вопросы