WebService не читает web.config - PullRequest
       18

WebService не читает web.config

3 голосов
/ 06 апреля 2010

У меня есть 3 строки подключения в web.config, и я использовал их так:

using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["SomeName"].ConnectionString))

Каждый metgod вызывается приложением winforms.

Один из веб-методов не работает должным образом, потому что он читает только одну строку подключения:

data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true

Это не строка подключения из моего web.config.

Я вызываю каждый метод одинаково.

Как это невозможно ??

РЕДАКТИРОВАНИЕ:

Я использую фасад: Это структура: WinForms вызывает WebMethod SaveItem SaveItem вызывает метод на Фасаде: SaveItemAndDoDatabaseStuff SaveItemAndDoDatabaseStuff выполняет работу с базой данных.

Ответы [ 5 ]

4 голосов
/ 10 апреля 2010

Мы не можем видеть вашу веб-структуру, но возможно ли, что ваше приложение не настроено в качестве приложения в IIS, поэтому подхватывает master web.config? Который выглядел бы точно вот так ...

Зайдите в IIS и убедитесь, что это приложение (может иметь значок cog).

1 голос
/ 13 апреля 2010

Используется строка подключения по умолчанию, которую имеет asp.net (в файле machine.config в папках установки .net).

Сделайте очистку:

<configuration>
  <connectionStrings>
    <clear/>
    ... your connection strings here
  </connectionStrings>
</configuration>

Кстати, когда вы говорите, что используете «SomeName» в строке подключения. Это не какая-либо произвольная строка подключения, которую вы использовали, по умолчанию это "LocalSqlServer".

0 голосов
/ 13 апреля 2010

Почему бы просто не добавить строку трассировки для распечатки используемого файла конфигурации непосредственно перед тем, как вы запросите строку подключения. Просто добавьте следующую строку:

        System.Diagnostics.Trace.WriteLine(
            System.AppDomain.CurrentDomain.SetupInformation.ConfigurationFile,
            "APP_CONFIG");

Установите точку останова после этого и посмотрите в окне вывода строку, которая начинается с «APP_CONFIG:». Это даст полный путь к файлу конфигурации и позволит вам определить, куда он загружается. Если вы все еще видите несоответствие между значениями времени выполнения и файлом конфигурации, то, вероятно, что-то меняет эти значения во время выполнения в вашем приложении.

0 голосов
/ 12 апреля 2010

Если ваше приложение WinForms обращается напрямую к базе данных X ( не через веб-сервис), то строка подключения для базы данных X должна быть в app.config (в проекте WinForms).

Если ваша веб-служба (как я понимаю, включает ваш фасад и уровень вашей базы данных), общается с базами данных X, Y и Z, тогда строки подключения для X, Y и Z должны быть в web.config ( в проекте веб-служб).

0 голосов
/ 06 апреля 2010

Вы должны хранить строки соединения в web.config или app.config в любом проекте, который вы выполняете.

В вашем случае вы должны иметь строки соединения в вашем app.config дляваше приложение winforms.

...