Как прочитать пользовательский файл .config в Asp.Net? - PullRequest
0 голосов
/ 11 июня 2011

У меня есть пользовательский файл конфигурации на моем сайте asp.net с именем urls.config, который содержит простое значение ключа, только для целей перенаправления, теперь я хочу прочитать этот файл программно и добавить значения в этот файл возможность использовать XMLTextReader и XMLDocument для чтения значения из этого файла, но я не могу добавить значения в этом файле.

Любая помощь будет принята с благодарностью. Вот моя структура для файла конфигурации:

<rewriteMaps>  
  <rewriteMap name="StaticRewrites" />  
  <add key="/superstars4012" value="/article.aspx?articleid=4012" />  
  <add key="/superstars4013" value="/article.aspx?articleid=4013" />  
  <add key="/superstars4014" value="/article.aspx?articleid=4014" />  
  <add key="/superstar" value="/article.aspx?articleid=4012" />  
</rewriteMaps>  

XmlDocument doc = new XmlDocument();<br> doc.Load(Server.MapPath("urls.config"));<br> XmlElement element = doc.CreateElement("add");<br> element.SetAttribute("key", txtAddVanity.Text);<br> element.SetAttribute("value", "/article.aspx?articleid=4012");<br> doc.DocumentElement.AppendChild(element);<br> doc.Save(Server.MapPath("urls.config"));<br>
это хорошо работает, если расширение файла .xml, но не когда я изменяю его на .config, мое требование - .config, так как перенаправления не работают в .xml

1 Ответ

1 голос
/ 11 июня 2011

Как красноречиво сказано в этом посте msdn , изменение файла web.config во время работы приложения, безусловно, возможно (в конце концов, это всего лишь текст), но это будет очень плохая идея это изменение файла конфигурации приведет к перезапуску приложения на сервере, что приведет к завершению любых сеансов с текущими пользователями, и все новые посетители увидят страницу с ошибкой, пока приложение не будет перезапущено. Конечно, не идеально.

Судя по вашему коду,

<add key="/superstar" value="/article.aspx?articleid=4012" />  

Похоже, вы выполняете перезапись URL-адреса со статического URL-адреса в строку динамического запроса. Есть гораздо лучшие способы сделать это. Одним из них является модуль IIS "удобные для пользователя URL". У меня очень мало проблем, которые я не смог решить с помощью этого модуля.

Его логика такова:

  1. пользователь вводит "http://www.domain.com/page-this-or-that
  2. В IIS есть правило регулярных выражений, которое соответствует этому шаблону URL и перехватывает URL
  3. пользователь направлен на http://www.domain.com/page?id=page-this-or-that
  4. Вы получаете строку запроса и сохраняете ее в строке
  5. Затем вы выполняете вызов базы данных, который извлекает и отображает строку базы данных с заголовком «page-this-or-that»

Это будет намного проще в обслуживании, а также безопаснее для вашего приложения и ваших пользователей.

-Cheers!

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