Подтвердить что ты не робот

Диспетчер конфигурации С#. ConnectionStrings

У меня есть консольное приложение, содержащее файл конфигурации приложения, содержащий одну строку подключения, как показано ниже:

<configuration>
  <connectionStrings>
    <add name="Target" 
      connectionString="server=MYSERVER; Database=MYDB; Integrated Security=SSPI;" />
  </connectionStrings>
</configuration>

Когда я передаю это моему соединению, используя:

ConfigurationManager.ConnectionStrings[1].ToString()

У меня есть два значения, поэтому, используя второй в коллекции, мой вопрос: откуда эта вторая секунда?

Я проверил версию \Bin и оригинал, и это не мое! Очевидно, что система породила один, но я этого раньше не видел? Может ли кто-нибудь просветить меня?

Строка подключения тайны:

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

Это не проблема как таковая, я просто хотел бы знать, почему это происходит? Спасибо заранее!

В будущем обратитесь к тем, кто может или не может наткнуться на это, после обнаружения machine.config становится очевидным, что плохой практикой является ссылка на конфигурацию по его индексу, поскольку каждый стек потенциально может быть другим, и именно поэтому Используются "ключи".

В этом случае мой код будет выглядеть следующим образом:

ConfigurationManager.ConnectionStrings["Target"].ToString()

Приветствует всех!

4b9b3361

Ответ 1

Проверьте machine.config. Если вам нужна только ваша запись, вы можете добавить элемент <clear /> в элемент <connectionStrings>, например, так...

<connectionStrings>
  <clear />
  <add name="Target" 
       connectionString=
             "server=MYSERVER; Database=MYDB; Integrated Security=SSPI;" />
</connectionStrings>

Ответ 2

Он определен в файле machine.config и является глобальным для всех приложений .Net на машине.

Строки подключения "стекают" через иерархию конфигурации, поэтому имя элемента для вашей собственной строки подключения помечено как "добавить". Вы добавляете свою собственную строку соединения в список строк соединения на уровне машины.

Может быть предпочтительнее использовать:

ConfigurationManager.ConnectionStrings["Target"].ConnectionString

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

Ответ 3

Проверьте файл machine.config(под WindowsDir\Framework). Я просто проверил мой, и у меня есть то же самое.

Ответ 4

Идентификатор первого элемента в теге Connection Strings сохраняется по умолчанию И он представляет строку подключения базы данных > MemberShip.

Причина рассмотрения для CLR должна использоваться во время вашего приложения, так что CLR от вашего имени присоединяет его по умолчанию.

Как и CLR Doing с конструктором по умолчанию в создании класса без конструктора.