Я полагаю, что вы используете какую-то веб-ферму.
Одно из применений государственной службы - в веб-саду (несколько рабочих процессов на одном компьютере). В этом случае вы можете использовать балансировку нагрузки, чтобы поддерживать подключение пользователя к определенному серверу, и чтобы все n рабочих процессов совместно использовали одну и ту же службу состояния.
РЕДАКТИРОВАТЬ: В сценарии «веб-сад + служба состояния» или «сервер sql» вы также можете перерабатывать рабочие процессы на этой машине без подключения клиентов, теряющих сеанс.
Я не так хорошо знаком с использованием SQL Server в качестве хранилища состояний сеансов, но я думаю, что вы добьетесь устойчивости, используя SQL Server в кластере. В этом случае у вас все еще может быть несколько рабочих процессов и несколько серверов, но вам не придется использовать липкий сеанс (привязка к серверу).
И еще одно замечание: вы можете использовать службу состояний на втором компьютере, и все серверы в ферме будут подключены к этому компьютеру, но тогда у вас будет единственная точка отказа.
И, наконец, существуют сторонние (и некоторые отечественные) распределенные приложения, подобные государственным службам. Некоторые из них имеют преимущества в производительности по сравнению с другими опциями, плюс событие Session_End будет фактически срабатывать. (И при поддержке сеансов как службы состояний, так и SQL Server Session_End в Global.asax не будет запускаться (может быть способ подключения к SQL Server)).