Verwenden Sie QueueBackgroundWorkItem mit Benutzeridentität?

8

Ich verwende HostingEnvironment.QueueBackgroundWorkItem , um die Arbeit im Hintergrund einer ASP.Net-Anwendung auszuführen, basierend auf Scott Hanselmans Blogpost So führen Sie Hintergrundaufgaben in ASP.NET aus .

Ich möchte die Hintergrundaufgabe als aktuelle Benutzeridentität ausführen. Ich habe versucht, ein WindowsPrincipal zu übergeben und Thread.CurrentPrincipal in der Aktion zu setzen, aber dies führte nicht dazu, dass die Aktion als aktueller Benutzer ausgeführt wurde.

Ist das möglich, oder bedeutet das Verwenden von HostingEnvironment immer das Ausführen als App-Pool-Identität?

Bearbeiten

Nicht genau auf meine ursprüngliche Frage, aber ich habe auch versucht, einen Wert über CallContext.LogicalSetData () und CallContext.LogicalGetData () zu übergeben. Auf der Get-Seite ist der Wert immer null.

Bearbeiten Sie # 2

Dies wurde auch auf der Warteschlangenseite versucht:

%Vor%

Wenn die Arbeit tatsächlich erledigt ist, ist die aktuelle WindowsIdentity in der Aktion immer noch die App-Pool-Identität.

    
Phil Sandler 29.06.2015, 21:34
quelle

2 Antworten

0

Gibt es einen bestimmten Grund, warum Sie "HostingEnvironment" verwenden müssen?

oder Haben Sie versucht, den WindowsImpersonationContext zu verwenden?

%Vor%

Hier erfahren Sie mehr

    
ronnie 02.07.2015 23:07
quelle
0

Die Identität des aktuellen Benutzers ist dem Thread zugeordnet, der die Anfrage bearbeitet, und ist nur für die Gültigkeitsdauer dieser Anfrage gültig. Selbst wenn Sie einen Verweis auf HttpContext.Current.User.Identity an Ihre Worker-Funktion übergeben haben, würden Sie feststellen, dass sie möglicherweise nicht mehr gültig ist, wenn Sie versuchen, sie zu verwenden. Soweit ich das beurteilen kann, müssen Sie ein wenig mit der Windows-API arbeiten, um das Identitätstoken zu klonen, um eine neue WindowsIdentity zu erstellen, die Sie dann in Ihrer Hintergrundaufgabe verwenden können. So etwas wie das:

%Vor%

Übergeben Sie diese WindowsIdentity an Ihre Hintergrundaufgabe und geben Sie sie bei Bedarf als Identität aus. Vergiss nicht, es zu entsorgen.

    
bmm6o 10.11.2015 17:02
quelle

Tags und Links