The reason for this is that there is a specific issue where exclamation marks followed by whitespace are placed in the VIEWSTATE by some random company routers/server/something.
After removing these, the VIEWSTATE is fine and can be deserialised (as confirmed by View State Decoder 2 which is a pretty cool program).
So, what I want to do is to
- catch the error that occurs
- check the VIEWSTATE for this issue
- modify the VIEWSTATE (remove !'s)
- try to parse the VIEWSTATE again
I am working on trying to override the LoadPageStateFromPersistenceMedium in the System.Web.UI.Page and work magic from there. Still working on it...