Как правило, у вас должно быть одно соединение и транзакция для длины веб-запроса.
Если у вас два соединения, у вас могут быть противоречивые данные. например в первом запросе вы проверяете баланс банка, а затем закрываете его. Затем вы добавляете 5 долларов к балансу и сохраняете их при следующем подключении. Что, если кто-то еще добавил 5 долларов между двумя соединениями? Это пропало бы.
Самое простое, что нужно сделать, это открыть соединение global.asax BeginRequest и сохранить его в HttpContext. Всякий раз, когда вам нужно соединение, потяните его оттуда. Убедитесь, что вы. Закройте соединение в вашем EndRequest
Кроме того, читайте здесь о пуле соединений: http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx
Повторное открытие и закрытие соединений не является «дорогим», при условии, что имя пользователя всегда одинаково.