I have a WAP site powered by ASP.NET Mobile controls. We're using
cookieless sessions and have an F5 Load Balancer that balances the load
between two web servers.
Every once in a while we'll get the following exception:
System.FormatException: Invalid length for a Base-64 char array. at
System.Convert.FromBase64String(String s) at
System.Web.UI.LosFormatter.Deserialize(String input) at
System.Web.UI.MobileControls.MobilePage.LoadPageSt ateFromPersistenceMedium()
at System.Web.UI.Page.LoadPageViewState() at
System.Web.UI.Page.ProcessRequestMain()
We've configured our F5 to route all traffic to the same machine based
on the session ID in the URL. But what about the first request to the
site?
I suspect what's happening is this. The user's phone loads up the site
and the URL they load has no session ID in it because its the first
request. Any subsequent traffic has a session ID and so the F5 will
always send that traffic to the same machine.
But that machine isn't necessarily the same machine that issued the
original session ID! Since the first request was essentially routed
randomly to one of the two web servers, the F5 won't know to route
additional requests back to that same server since there was no session
ID in the first URL the user requested.
Does anybody agree with this assesment? Any suggestions on how to fix
it?