EndInvoke не является дополнительным, потому что это - место, где исключения выдаются, если что-то пошло не так, как надо в асинхронной обработке.
Так или иначе не должно быть никакой утечки, потому что, если IAsyncResult содержит некоторый собственный ресурс, он должен правильно реализовать IDisposable и расположить такие ресурсы, когда GC называет его финализатор.
Пока пользователь не закроет свой браузер. Это определение сеанса.
Чтобы настроить что-то более продолжительное, вам нужно будет использовать один из:
Часто существует их комбинация, когда пользователю выдается токен «запомнить меня» как файл cookie, чтобы им не приходилось входить в систему каждый раз при перезапуске браузера.
Он доступен, пока пользователь не закроет свой браузер.