Мне было интересно, можно ли изменить sqlConnectionString, используемый для SessionState в ASP.net, в зависимости от домена, на котором запущено приложение?
сценарий; У нас есть 20 сайтов, работающих из одного приложения, и все они взаимодействуют с разными базами данных, в зависимости от того, с какого домена (сайта) они просматривают.
При просмотре www.domain1.com приложение обращается к базе данных 'db1'. Сайт www.domain2.com, с другой стороны, общается с базой данных «db2» и т. Д., Выбирая соответствующий контент и распределяя нагрузку на каждую базу данных, а не используя одну основную базу данных для обработки всех соединений для сайтов.
Однако возникла проблема - для этой настройки мы используем режим SqlServer для SessionState, поэтому все пользователи всех сеансов сайтов хранятся в 1 базе данных aspstate, теперь, когда сайты становятся более занятыми / число сайтов увеличивается, эта база данных увеличивается постарайтесь обработать все запросы сеанса для всех сайтов, и мы начинаем получать ошибки тайм-аута, когда соединения с этой базой данных являются узким местом.
Мы можем отделить сайты от их собственного приложения и настроить различные приложения с одним и тем же кодом, но в каждом приложении установить разные базы данных Session в каждом Web.Config и, таким образом, снизить нагрузку. Эта задача будет довольно трудоемкой и приведет к большему управлению в долгосрочной перспективе. Так что ... Я хотел бы знать, возможно ли изменить внутри кода sqlConnectionString, используемого для SessionState, на основе домена, до создания объекта сеанса? Можем ли мы наследовать от System.Web.HttpApplication и использовать событие Application_AcquireRequestState для создания требуемой настройки объекта HttpSessionState?
Надеюсь, это имеет смысл, и кто-то может предоставить некоторые указатели и доказать мне, что это не несбыточная мечта!
Cheers,
Стив