Проверьте этот ответ: Проблема с IHttpAsyncHandler и счетчиком ASP.NET "Выполнение запросов" для технической точки зрения.
У вас было несколько вопросов:
Если запрос еще не завершен, а пользователь, увидев, что ничего не произошло, нажимает кнопку снова, снова и снова?
В этом случае несколько запросов будут поставлены в очередь на вашем веб-сервере, и все они будут обработаны. Это повлияет на производительность. Как вы упомянули, ваш пользовательский интерфейс должен предотвратить это, отключив кнопку и предоставив пользователю некоторую обратную связь о том, что запрос обрабатывается.
Что произойдет в моем веб-приложении и в базе данных? Будет ли ожидаться, когда предыдущий запрос будет завершен, прежде чем выдать другой?
Нет. Если вы не блокируете один ресурс в своей базе данных, каждый запрос будет обрабатываться отдельным работником в IIS. Существуют ограничения на количество одновременных запросов, но, как правило, все происходит параллельно. Если работа, которую вы выполняете, требует интенсивной загрузки ЦП, это может привести к конфликту ресурсов ЦП и снижению общей производительности. Вам определенно следует взглянуть на модель AsyncHandler.
Принимает ли он несколько запросов за сеанс?
Да
Будет ли зависать мое веб-приложение?
Замораживание может быть неправильным словом. Вполне возможно, что очередь для запросов увеличится, если запросы поступают со скоростью, превышающей скорость их выполнения веб-сервером. Если это произойдет, пользователям будет показано, что ваш веб-сервер не отвечает или работает медленно.
Будет ли моя база данных одновременно выполнять несколько SQL-запросов от одного и того же пользователя?
Может.
Мой sql-сервер зависнет?
То же, что и выше. Если ваш SQL Server не может обрабатывать запросы быстрее, чем они поступают, пользователям может показаться, что ваше приложение не отвечает.