Веб-служба ASP.NET не видит appSettings

Кто-нибудь знает о каких-либо ситуациях, в которых веб-служба ASP.NET 2.0 не может прочитать значения appSettings из web.config? Кажется, у меня именно такая проблема - код считает, что appSettings пуст, когда это не так.

Более подробно: Этот код:

    Dim settings = ConfigurationManager.AppSettings
    Dim count = settings.Count   ' always gives zero

Неверно показывает, что в настройках приложения нет данных.

Моя веб-конфигурация выглядит так

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <!-- lots of other stuff -->
  <appSettings>
    <add key="SomeKey" value="Some Data" />
    <!-- other keys -->
  </appSettings>
</configuration>

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

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


person LondonPhantom    schedule 31.08.2011    source источник
comment
что-нибудь изменилось с производственного кода на код разработки?   -  person Tim B James    schedule 31.08.2011


Ответы (1)


Ах, кажется, причина была до абсурда проста. Мне просто нужно было перекомпилировать код VB! Случилось так, что, поскольку я был (правильно, как это бывает) убежден, что с кодом VB все в порядке, я сосредоточил все свои усилия на том, чтобы возиться с web.config и с настройками IIS (потому что это были вещи, которые могли возможно, будет отличаться между моей машиной и известной работающей живой программой). В конце концов я отказался от этого и решил временно обойти это, изменив код VB, чтобы вместо этого использовать жестко запрограммированные значения. Как только я это сделал и пересобрал, то обнаружил, что программа теперь корректно подхватывает appSettings (и мой хак стал ненужным).

Итак, я предполагаю, что код VB каким-то образом стал отсоединенным от web.config, и для его повторного подключения потребовалась перекомпиляция. Я несколько озадачен, потому что думал, что ASP.NET автоматически обнаружит изменения в web.config и, таким образом, все равно перекомпилирует, но, очевидно, это не так.

Если кто-нибудь может удовлетворить мое любопытство, объяснив, что могло происходить в ASP.NET, что может привести к необходимости явной перекомпиляции кода для правильного чтения web.config, я отмечу это как ответ на мой первоначальный вопрос. . (Если через день или около того никто не ответит, я отмечу этот пост как ответ).

person LondonPhantom    schedule 01.09.2011