Как говорили другие, большинство веб-серверов используют несколько процессов или потоков (лучше) для обслуживания нескольких запросов одновременно. В частности, вы можете установить для каждого пула приложений ASP.NET максимальное количество запросов в очереди и максимальное количество рабочих процессов. Каждый процесс имеет несколько потоков максимум (не настраивается AFAIK, я могу ошибаться), и входящие запросы обрабатываются в порядке поступления.
Более того, ASP.NET обрабатывает один отдельный запрос для каждого сеанса, но злонамеренный пользователь может открыть столько сеансов, сколько ему нужно.
Несколько входов в систему, вероятно, ударит базу данных и поставит ее на колени, вероятно, перед самим веб-сервером.
Насколько я знаю, не существует встроенного способа регулирования запросов ASP.NET, кроме установки максимального числа запросов в очереди (ожидающих обработки). Это число должно быть идеально очень маленьким. Вы можете отслеживать количество запросов ASP.NET в очереди с помощью счетчиков производительности. Скажем, вы обнаружите, что в пиковом трафике это число равно 100. Затем вы можете обновить приложение, чтобы оно отклоняло попытки входа в систему, когда это число превышает 100, чтобы база данных не была повреждена (никогда не делал этого, просто мысль).