Где я должен разместить строку подключения к моей базе данных и как мне обрабатывать пулы соединений? - PullRequest
2 голосов
/ 04 мая 2011

Я занимаюсь разработкой приложения asp.net, которое я разместил на сервере IIS.Чтобы открыть соединение, я использую:

SqlConnection con = new SqlConnection("Server = INLD50045747A\\SQLEXPRESS; 
Database = MyDatabase;User ID = sa; Password = Welcome1; Trusted_Connection = False;");
con.Open();

Можно ли где-нибудь сохранить эту строку соединения, чтобы мне не нужно было записывать в каждый файл aspx.cs?Я использую базу данных MSSQL.

Я столкнулся с проблемой, которая гласит:

Время ожидания истекло до получения соединения из пула.Это могло произойти из-за того, что все пулы подключений использовались и максимальный размер пула был достигнут

Я где-то читал, что просит увеличить максимальный пул соединений до 100. Повлияет ли это на производительность моего приложения?

Ответы [ 7 ]

4 голосов
/ 04 мая 2011

Вы, вероятно, неправильно закрываете свои открытые соединения.

Увеличение «размера бассейна» - это все равно, что положить под ведро водопад большего ведра - это поможет, но едва.

Попробуйте найти области, где происходит нечто подобное:

con.Open();

Убедитесь, что если он не находится в try / catch, что он есть в одном, и что он содержит оператор finally.

try {
   con.Open();
   //several other data base releated
   //activities
} catch (Exception ex) {
  // do something
} finally {
  con.Close();
}

Кроме того, чтобы избежать использования блока finally, вы можете просто обернуть SqlConnection в оператор using.

  using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["yourKey"].ConnectionString))
        {

            // write your code here 

        }

Что касается вашего вопроса о строке подключения, сохраните его в своем web.config

<connectionStrings>
<add name="name" connectionString="Data Source=;Initial Catalog=;User ID=sa;password=;Persist Security Info=True;Connection TimeOut=20; Pooling=true;Max Pool Size=500;Min Pool Size=1" providerName="System.Data.SqlClient"/>
</connectionStrings>
4 голосов
/ 04 мая 2011

Сохраните его в файле web.config, в разделе connectionStrings:

<connectionStrings>
    <add name="name"
        connectionString="Data Source=;Initial Catalog=;User ID=sa;password=;Persist Security Info=True;Connection TimeOut=20; Pooling=true;Max Pool Size=500;Min Pool Size=1"
        providerName="System.Data.SqlClient"/>
</connectionStrings>

И тогда вы сможете получить доступ к этому в своем коде ...

ConfigurationManager.ConnectionStrings["name"].ConnectionString
3 голосов
/ 04 мая 2011

Вы также можете использовать

автоматически удалит объект

если вы используете "использование", нет необходимости в con.close и все

  using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["yourKey"].ConnectionString))
        {

     // write your code here 

        }
2 голосов
/ 04 мая 2011

Сохраните строку подключения в файлах web.config. Вы можете найти множество примеров. Проверьте это для свойств. http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring%28v=vs.71%29.aspx

Спасибо Шанкар

1 голос
/ 04 мая 2011

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

Если вы используете одну и ту же строку подключения во многих приложениях, вы можете подумать о написании службы для предоставления строк подключения, поэтому вам придется менять их только в одном месте.

1 голос
/ 04 мая 2011

Используйте справку обоих

try
{
 con.Open();
}
catch(Exception ex)
{
if(con.State== ConnectionState.Open)
con.Close();
}
finally
{
con.Close();
}

, а также добавьте строку подключения в Web.Config в разделе Конфигурация.Это поможет вам.

0 голосов
/ 04 мая 2011

Лучшим вариантом является использование введенных настроек.

Откройте свойства вашего проекта.
Перейдите на вкладку «Настройки».
Добавьте новую настройку, например MainConnectionString, выберите тип настройки (ConnectionString). В значение введите строку подключения или нажмите кнопку «...», чтобы открыть диалоговое окно для создания строки подключения.

Теперь вы можете ссылаться на строку подключения в коде так:

Settings.Default.MainConnectionString

Если вы откроете свой конфигурационный файл, вы увидите

  <configuration>
    <connectionStrings>
      <add name="WebApplication1.Properties.Settings.MainConnectionString"
           connectionString="Data Source=localhost;Initial Catalog=AdventureWorks;Integrated Security=True"
           providerName="System.Data.SqlClient" />
    </connectionStrings>

Вы можете иметь эту строку подключения Оговаривается:

  • для одного веб-сайта в своем собственном web.config.
  • для группы веб-сайтов
  • для всех веб-сайтов на коробке: в области действия машины web.config.
  • для всех приложений на коробке: в файле machine.config.

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

...