OperationContext.Current равен нулю после первого ожидания при использовании async / await в службе WCF.

Я использую шаблон async / await в .NET 4.5 для реализации некоторых методов обслуживания в WCF. Пример сервиса:

Контракт:

[ServiceContract(Namespace = "http://async.test/")]
public interface IAsyncTest
{
    Task DoSomethingAsync();
}

Реализация:

MyAsyncService : IAsyncTest
{
    public async Task DoSomethingAsync()
    {
        var context = OperationContext.Current; // context is present

        await Task.Delay(10);

        context = OperationContext.Current; // context is null
    }
}

У меня проблема в том, что после первогоawait OperationContext.Current возвращаетсяnull и я не могу получить доступOperationContext.Current.IncomingMessageHeaders.

В этом простом примере это не проблема, так как я могу захватить контекст до того, какawait, Но в реальном случаеOperationContext.Current доступ осуществляется из глубины стека вызовов, и я действительно не хочу менять большое количество кода, просто чтобы передать контекст дальше.

Есть ли способ получить контекст операции послеawait указать, не передавая его вниз по стеку вручную?

Ответы на вопрос(6)

Ваш ответ на вопрос