ASPNET: переключаться между поставщиками состояний сеансов?

Я хочу разработать новый пользовательский поставщик состояния сеанса или использовать существующий (распределенное кэширование, sql ...). Наш основной веб-сайт обеспечивает более 10 000 000 посещений в день. Для нас очень важно обеспечить легкий откат / переключение в случае ошибки или снижения производительности. Изменение web.config не является оптимальным, поскольку у нас более 20 серверов переднего плана. Наша идея состоит в том, чтобы переключаться между провайдером сеансов (от нашего обычая до InProc) с помощью простой конфигурации в базе данных.

Можно ли иметь несколько поставщиков состояния сеанса или легко переключаться между поставщиками?

я нашел здесь http://netpl.blogspot.fr/2007/06/wrapped-inprocsessionstatestore.html, решение для использования универсальной обертки, но она не кажется достаточно надежной.

Спасибо,

2 ответа

Решение

Только для будущих ссылок невозможно динамически изменить поставщика состояния сеанса.

Это не.. совершенно верно.. вы можете сделать это, используя Reflection:

var privateFieldFlags = System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic;

//Get session state section
var sessionStateSection = ConfigurationManager.GetSection("system.web/sessionState") as SessionStateSection;
var values = typeof(ConfigurationElement).GetField("_values", privateFieldFlags).GetValue(sessionStateSection);
var entriesArray = values.GetType().BaseType.GetField("_entriesArray", privateFieldFlags).GetValue(values);

//Get "Mode" entry (index: 2)
var modeEntry = (entriesArray as System.Collections.ArrayList)[2];
var entryValue = modeEntry.GetType().GetField("Value", privateFieldFlags).GetValue(modeEntry);

//Change entry value to InProc
entryValue.GetType()
        .GetField("Value", privateFieldFlags)
        .SetValue(entryValue, System.Web.SessionState.SessionStateMode.InProc);

Рекомендации:
Динамический поставщик состояния сеанса
http://www.answerandquestion.net/questions/4447903/dynamic-session-state-provider

Другие вопросы по тегам