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 указать, не передавая его вниз по стеку вручную?

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

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