Попытка сделать веб-метод асинхронным
Проект, над которым я сейчас работаю, включает в себя MS SQL Server и веб-службы ASP.net, которые используют переменные сеанса. По-видимому, это приводит к тому, что клиентские вызовы выполняются последовательно. Я хочу убедиться, что эти методы выполняются асинхронно.
После некоторого исследования мне кажется, что самым лучшим способом является сохранение состояния сеанса в базе данных с использованием таблицы, которая отслеживает сеансы (используя, например, руководства), и отдельных таблиц для каждого сеанса.
Прежде чем я углублюсь в это, я должен знать, смогу ли я получить такое же чувство асинхронных операций для веб-службы, если я настрою SQL Server для хранения сеанса.
Могу я?
1 ответ
Извините, что говорю, но единственный способ асинхронно выполнить ваш код и использовать переменные сеанса - это создать полностью настраиваемое решение сеанса - я имею в виду полностью настраиваемое и полностью отключить сеанс asp.net.
Основные советы, чтобы сделать вашу сессию:
- У вас есть один файл cookie, связанный с данными пользователя
- Данные находятся на одной таблице в вашей базе данных.
- Вы создаете настраиваемые поля в этой таблице для каждого сеанса и избегаете использования словаря<>
- Вы работаете с Dirty read, последняя запись выигрывает
- Вы читаете и пишете только те переменные сеанса, которые вам нужны каждый раз (не все вместе)
- В каждой строке указывается дата ожидания, и для удаления старых сеансов используется, как MS, шедулер на SQL.
- Загрузить сессию на
OnPreInit
Сохраните только то, что изменили наOnUnload
- Чтобы полностью отключить сеанс, вам нужно заблокировать с помощью
Mutex
код, который теперь работает нормально, потому что сеанс выполняет синхронизацию без уведомления, но без блокировки сеанса может выполняться два раза, как новая вставка в вызовы базы данных.
родственник:
Веб-приложение заблокировано при обработке другого веб-приложения при совместном использовании сеанса
Какие счетчики perfmon полезны для выявления узких мест ASP.NET?
Замена сессии ASP.Net полностью
ответить и на этот вопрос if I configure SQL Server to store the session ?
сеанс все еще блокируется и блокирует запрос на отдых. Если у вас есть сеанс на SQL-сервере или на другом носителе, не нужно менять способ работы, только место сохраненных данных.