Помните, что соединения объединены на connectionstring. Если у Вас будет много баз данных и подключения с помощью многих connectionstrings, приложение создаст новое соединение, когда ни один не будет существовать с корректным connectionstring. Тогда это объединит то соединение и, если пул будет полон, ударьте существующее соединение. Значение по умолчанию Размер Объединения Max является 100 соединениями, поэтому если Вы обычно возвратитесь больше чем через 100 баз данных, Вы закроете и откроете соединения все время.
Это не идеально, но можно решить проблему, всегда соединяясь с единой базой данных (одна строка подключения) и затем переключить ИСПОЛЬЗОВАНИЕ 'контекста дб [DBName]'. Существуют недостатки:
Вы могли экспериментировать с увеличением Размера Объединения Max, если Ваше количество базы данных не огромно. Иначе, если некоторые базы данных используются часто, в то время как другие не, Вы могли выключить объединение на нечастом dbs. Оба объекта настроены через connectionstring.
До метрик, следя за развитием событий входа в систему и выхода из системы на SQL Server хорошее начало. Если Ваше приложение объединяет приятно, Вы не должны видеть многие из них.
В версии 3.0 это довольно сложно; но был улучшен в версии 3.5 ( прочтите «Определить IP-адрес клиента в WCF 3.5 »). Однако мне ничего не известно о событии.
Какой адрес вы ищете? IP-адрес?
Если да, я надеюсь, вы знаете об ограничениях на это - он будет неточным, если клиент находится на другой стороне устройства NAT или Интернет-прокси.
If System.Web.HttpContext.Current.Request.UserHostAddress isn't null, then it has the remote address. But that might be a proxy or load balancer (the case I have in our production environment).