Wrong Thread.CurrentPrincipal in async WCF end-method

Mam usługę WCF, która ma swojąThread.CurrentPrincipal ustawić wServiceConfiguration.ClaimsAuthorizationManager.

Gdy implementuję usługę asynchronicznie w ten sposób:

    public IAsyncResult BeginMethod1(AsyncCallback callback, object state)
    {
        // Audit log call (uses Thread.CurrentPrincipal)

        var task = Task<int>.Factory.StartNew(this.WorkerFunction, state);

        return task.ContinueWith(res => callback(task));
    }

    public string EndMethod1(IAsyncResult ar)
    {
        // Audit log result (uses Thread.CurrentPrincipal)

        return ar.AsyncState as string;
    }

    private int WorkerFunction(object state)
    {
        // perform work
    }

Uważam, że Thread.CurrentPrincipal jest ustawiony na poprawny ClaimsPrincipal w metodzie Begin, a także w WorkerFunction, ale w metodzie końcowej jest ustawiony na GenericPrincipal.

Wiem, że mogę włączyć zgodność z ASP.NET dla usługi i użytkowaniaHttpContext.Current.User który ma poprawną zasadę we wszystkich metodach, ale wolałbym tego nie robić.

Czy istnieje sposób, aby zmusić Thread.CurrentPrincipal do poprawnego ClaimsPrincipal bez włączania zgodności z ASP.NET?

questionAnswers(3)

yourAnswerToTheQuestion