#c# #asp.net-mvc
#c# #asp.net-mvc
Вопрос:
Я хочу сохранить некоторое значение, для этого мне нужно проверить на стороне всех пользователей (возможно, у всех есть доступ с разных компьютеров), что значение будет равно true или false, затем нужно выполнить некоторые дальнейшие действия.
Я попытался сохранить его в объекте in ‘ session
‘, но он работает только для одной машины.
string InprocValue = Session["Inproc"]==null?"": Session["InprocLeadMobileNo"].ToString();
if (InprocValue == false)
{
Session["Inproc"] = true;;
}
А также мне нравится избегать частого обхода базы данных.
итак, у нас есть какие-либо объекты на стороне сервера, где размещено приложение, тогда мы можем легко извлечь его с любой стороны пользователя и поместить в In-Process
на основе условий true / false.
Комментарии:
1. Вы можете использовать
Application
вместоSession
. Это общее для всех пользователей.2. Я уже пробовал подобное приложение [«Inproc»]. toString(); затем выдается сообщение об ошибке: «Имя ‘Application’ не существует в текущем контексте.
3. Я бы сказал, реализовать надлежащий механизм кэширования за пределами памяти вашего сервера приложений
4. Вы работаете на нескольких серверах? Если да, то вам понадобится какой-нибудь центральный экземпляр для хранения этого значения, будь то база данных или, возможно, кэш Redis, или файл на общем сетевом ресурсе. Если нет, как заявил Каран, вы можете использовать
httpContext.Application
.5. Какова ваша технология разделения? Asp.net веб-форма, asp.net mvc, asp.net ядро mvc?
Ответ №1:
Вам нужно было бы изменить режим сеанса с «InProc» либо на StateServer, либо на SQLServer.
Обзор режимов состояния сеанса см. в этой статье: http://msdn.microsoft.com/en-us/library/ms178586.aspx
Для сервера состояния сеанса ознакомьтесь с Windows Server AppFabric, высокопроизводительным кэшем в памяти, который также может служить поставщиком состояния сеанса для ASP.NET: http://msdn.microsoft.com/en-us/windowsserver/ee695849