[UPDATE: this answer is wrong. I've only left it here as I've done some interesting investigation into the situation, which might be worth people reading]
What @Travis said was the problem - that "when the form structure no longer exists, neither does your postdata structure" - is absolutely not true. The reference to the form scope might have gone, but as long as there's any reference to the data (like request.session.postData
) then the underlying object will not be removed.
The problem is likely to be that when you do your redirect, OnRequestEnd.cfm doesn't run for that request, so the variables in request.session never get copied into the session scope. It all depends on how you're doing the redirect. I'd've assumed it'd have been with a <cflocation>
, except you say you're using CFMX7 which can't do a 301 (which you're say you're doing): it can only do a 302. Can you pls clarify how you're doing this redirect? Cheers.
Digression: you're adding quite a lot of overhead plus a bottleneck at either end of the request in continuing with all this legacy session-locking shenanigans. You really ought to put aside some time to pull it all out. This locking session-scope-locking carry-on hasn't been necessary since CF5. Also if your session scope contains structs, you're not mitigating the problem anyhow. This is, obviously, an aside; and nothing to do with your actual question. I just figured it was worth mentioning.