Bir ASP.Net uygulamasının arka planında çalışmak için, How to run Background Tasks in ASP.NET numaralı yazara dayanarak, numaralı blog yayınını kullanarak HostingEnvironment.QueueBackgroundWorkItem
10 kullanıyorum.Kullanıcı Kimliği ile QueueBackgroundWorkItem Kullanılsın mı?
Arka plan görevini geçerli kullanıcı kimliğiyle çalıştırmak istiyorum. Bir WindowsPrincipal geçirmeyi ve Thread.CurrentPrincipal'ı eylemde ayarlamayı denedim, ancak bu işlem geçerli kullanıcı olarak yürütülmesine neden olmadı.
Bu olanaklı mıdır, yoksa HostingEnvironment'ı kullanmak her zaman Uygulama havuzu kimliği olarak çalışıyor?
Düzenleme Tam olarak benim asıl soruya noktada, ama ben de CallContext.LogicalSetData() ve CallContext.LogicalGetData() üzerinden bir değer geçmek çalıştı. Get tarafında, değer her zaman boş.
Düzenleme # 2
Ayrıca kuyruk tarafında bu çalıştı: eser aslında yapılırusing (HostingEnvironment.Impersonate(windowsIdentity.Token))
{
HostingEnvironment.QueueBackgroundWorkItem(work);
}
Eylem mevcut WindowsIdentity hala uygulama havuzu kimliktir.
Dokümanlar, "Bu aşırı yüklenmiş yöntem, arayandan gelen aramaya ExecutionContext veya SecurityContext akışını akıtmaz. Bu nedenle, CurrentPrincipal özelliği gibi bu nesnelerin üyeleri arayandan arayan kişiye akmaz." https://msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment.queuebackgroundworkitem(v=vs.110).aspx –