app.config странность - PullRequest
       15

app.config странность

2 голосов
/ 12 марта 2009

У меня странная вещь, происходящая с моим файлом app.config. Мой раздел ConnectionStrings содержит это:

<connectionStrings>
  <add name="Connection" connectionString="Data Source=TheServer;
   Initial Catalog=TheDatabase;IntegratedSecurity=SSPI" 
   providerName="System.Data.SqlClient"/>
</connectionStrings>

Однако, когда я запрашиваю раздел через ConfigurationManager.ConnectionStrings [0], я получаю эту строку подключения:

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

Откуда он получает это значение?

Ответы [ 5 ]

6 голосов
/ 12 марта 2009

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

<connectionStrings>
  <clear/>
  <add name="Connection" connectionString="Data Source=TheServer;
   Initial Catalog=TheDatabase;IntegratedSecurity=SSPI" 
   providerName="System.Data.SqlClient"/>
</connectionStrings>

Или просто никогда не ссылайтесь на строки подключения по индексам, используйте имена, которые вы им даете:

ConfigurationManager.ConnectionStrings["Connection"]
1 голос
/ 12 марта 2009

Это происходит из другого конфига, либо из верхнего дерева app.config, либо из конфига машины. Чтобы игнорировать что-либо еще, используйте <clear />, чтобы избавиться от чего-либо, чего нет в текущей конфигурации.

<connectionStrings>
   <clear />
   <add name="Connection" connectionString="Data Source=TheServer;
     Initial Catalog=TheDatabase;IntegratedSecurity=SSPI" 
     providerName="System.Data.SqlClient"/>
</connectionStrings>
1 голос
/ 12 марта 2009

Это происходит из machine.config. .NET автоматически объединяет разделы строки подключения (и некоторые другие, как мне кажется) конфигурации вашего приложения (или веб-конфигурации) и вашего machine.config.

Вы можете прочитать о том, как это работает в ASP.NET здесь .

0 голосов
/ 12 марта 2009

Хотя на вопрос ответил Джейсон Пуньон, я настоятельно рекомендую обращаться к строкам подключения по их имени, а не по индексу. например,

ConfigurationManager.ConnectionStrings["Connection"]
0 голосов
/ 12 марта 2009

В дополнение к ответу Натха, это лучше:

ConfigurationManager.ConnectionStrings["Connection"]
...