Предотвращает ли веб-формы ASP.NET двойную передачу?

Я работаю над проектом ASP.NET 4.0 Web Forms, после перерыва около 5 лет, и меня смущает поведение отправки.

В случае нажатия кнопки, я сплю поток, чтобы я мог нажать кнопку отправки несколько раз.

Из того, что я могу сказать, ASP.NET препятствует тому, чтобы событие click вызывалось более одного раза. Это правда?

Кстати: я отключил JavaScript для этого теста.

1 ответ

Решение

"ASP.NET предотвращает вызывание события click более одного раза. Это правда?"

Нет, на самом деле с вами происходит то, что ваши события блокируются блокировкой сеанса. ( Что такое сеанс на asp.net, это модуль на asp.net, который может хранить данные для каждого пользователя, который посещает сайт)

Поэтому, когда вы делаете отправку, и страница выполняет эту отправку, а затем вы делаете вторую перед первым воспроизведением, на самом деле, вторая ожидает, когда первый завершит и разблокирует сеанс.

Чтобы выполнить тест и доказать, что сеанс блокирует ваш запрос, отключите сеанс и попробуйте еще раз.

родственник:
Веб-приложение заблокировано при обработке другого веб-приложения при совместном использовании сеанса
Какие счетчики perfmon полезны для выявления узких мест ASP.NET?
Замена сессии ASP.Net полностью
Попытка сделать веб-метод асинхронным

Нет, поскольку вы переводите ваш поток в спящий режим, он блокирует сеанс, что не позволяет ему обрабатывать любые дальнейшие запросы. Следовательно это дает тот эффект. Если у вас есть самостоятельная задача, которую можно выполнить без веб-запроса и ответа, вы можете выполнить ее в отдельном потоке. Это не заблокирует ваш процесс.

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