When should I use programmatic impersonation?
From Guidance Share
J.D. Meier, Prashant Bansode, Alex Mackman
If your application is such that it uses the ASP.NET worker process Identity for the most part and you only want to temporarily impersonate the original caller (or any other identity) to perform specific set of operations or access specific resources, you should use programmatic impersonation.
For more information on using programmatic impersonation, see “How To: Use Impersonation and Delegation in ASP.NET 2.0” at http://msdn.microsoft.com/library/en-us/dnpag2/html/PAGHT000023.asp