Уеб услугата ASP.NET не може да види настройките на приложението

Някой запознат ли е със ситуации, при които уеб услуга на 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 кода, за да използва вместо това твърдо кодирани стойности. Веднага след като направих това и го направих отново, открих, че програмата вече е взела правилно настройките на приложението (и моят хак стана ненужен).

И така, моето предположение е, че по някакъв начин VB кодът се е отделил от web.config и е необходимо прекомпилиране, за да го прикачите отново. Донякъде съм озадачен, защото мислех, че ASP.NET автоматично ще открие промените в web.config и така ще прекомпилира така или иначе, но очевидно не.

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

person LondonPhantom    schedule 01.09.2011