Sto utilizzando HostingEnvironment.QueueBackgroundWorkItem
per eseguire il lavoro sullo sfondo di un'applicazione ASP.Net, in base al post del blog di Scott Hanselman How to run Background Tasks in ASP.NET.Utilizzare QueueBackgroundWorkItem con l'identità utente?
Mi piacerebbe eseguire l'attività in background come identità dell'utente corrente. Ho provato a passare un WindowsPrincipal e impostare Thread.CurrentPrincipal nell'azione, ma ciò non ha comportato l'esecuzione dell'azione come utente corrente.
È possibile, o l'utilizzo di HostingEnvironment implica sempre l'esecuzione come identità del pool di applicazioni?
Modifica
Non esattamente sul punto alla mia domanda iniziale, ma ho anche provato a passare un valore tramite CallContext.LogicalSetData() e CallContext.LogicalGetData(). Sul lato Get, il valore è sempre nullo.
Modifica # 2
provato anche questo sul lato queuing:
using (HostingEnvironment.Impersonate(windowsIdentity.Token))
{
HostingEnvironment.QueueBackgroundWorkItem(work);
}
Quando il lavoro è in realtà fatto, il WindowsIdentity corrente nella azione è ancora l'identità del pool di app.
I documenti dicono "Questo metodo sovraccarico non scorre ExecutionContext o SecurityContext dal chiamante al chiamato, pertanto i membri di tali oggetti, come la proprietà CurrentPrincipal, non passeranno dal chiamante al chiamato." https://msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment.queuebackgroundworkitem(v=vs.110).aspx –