Probably because the app pool identity doesn't flow to the thread. To check validate Thread.Identity is the same value in your main path and your spawned threads.