Вам нужно две вещи, реализовать IHttpSessionState и HttpModule. В модуле HttpModule вы перехватываете события приложений AcquireRequestState и ReleaseRequestState.
В Web.Config вам нужно удалить модуль сеанса по умолчанию и добавить свой собственный.
Пространство имен System.We.SessionState имеет ряд других классов, которые вы можете использовать в своей реализации, если хотите и / или можете использовать для эталонного шаблона.