Are these the same GetUnitOfWork() method?
Where is currentSessionUOW?
Where is sessionHash? Are you firing up multiple SessionFactories (and FluentNHibernateHelpers)? ie; more than one per instance of the worker process?
It seems like you might be muddying the boundary between HTTP sessions, IIS worker process, NH SessionFactory, and NH Session. And that might be resulting in NH Sessions/Factories being orphaned in the sessionHash (assuming that's stored in the HTTP Session). You might be able to confirm this by lowering the Session Timeout in IIS from its default (20min) to, say, 1 min. Ultimately that wouldn't solve the problem, but might help point to where the problem exists.
The SuppressFinalize also sticks out to me a bit. What prompted you to put this there? Was your factory showing up as disposed in new http sessions when you weren't expecting it to be? You shouldn't have to do this if you've architected it right, and aren't crossing those boundaries I mention above (for instance, storing an http session-agnostic object in each http session that makes a request, then subsequently disposing that object after each request).
As for the word doc thing .. at least it wasn't .doc. I absolutely hate putting & seeing code in the group post/email because it seems to have an arbitrary fixed width and formatting is wrecked. The fact that .docx is an open format and respects the formatting is an added bonus. PasteBin is a good idea, but having everything I need in the email is convenient - especially in cases when my email is synced, but I don't have immediate access to data (which was the case for me when trying to help him and writing this up). Perhaps this is an 'official rule' of the group .. idk .. but it smells of an overzealous purist rant reminiscent of MS trolling, especially since you weren't helpful.. Personally, I think we're past that age of the internet.