IncrementUserCount and DecrementUserCount in Global.asax.cs are not thread safe.
I mean the following similar code in both functions:
EnsureUserCountVariable(key);
int onlineCount = (int)Application[key];
Application.Lock();
Application[key] = onlineCount + 1;
Application.UnLock();
It should be:
Application.Lock();
Application[key] = Application[key] == null ? 1 : (int)Application[key]+1;
Application.UnLock();