Non vedo qual è il problema, o meglio non trovo nell'applicazione Web alcuna problematica in più rispetto ad una normale applicazione.
Un'applicazione Web ASP.NET è multithreading per definizione.
Gli strumenti per gestire le situazioni che hai descritto sono molteplici (ad esempio, l'uso di transazioni); in ogni caso, non è possibile che due persone eseguano realmente la prenotazione precisamente nello stesso tempo: il primo che arriva provoca l'inserimento dello stato nel database e questo, di fatto, escluderà l'altra persona dal farlo, senza la necessità di intervenire in qualche modo con codice specifico.
E' chiaro poi che facendo ricerche preventive o dichiarando questa eventualità, è possibile fare in modo che la situazione di "scontro" tra le prenotazioni sia notificata in modo consono all'utente.
Ciao!![]()