Looks like while playing with sessionstate mode you have overlooked cookieless option. With mode=Inproc and cookieless=true, asp.net uses url to store session id. If you use absolute url, asp.net can't append the sessionid. Work around is to convert the url to relative url like this:
NavigateUrl = Response.ApplyAppPathModifier(yoururl);
Here is a discussion, you may find it helpful.