I am using async/await pattern in .NET 4.5 to implement some service methods in WCF.
Example service:
Contract:
[ServiceContract(Namespace = "http://async.test/")]
public interface IAsyncTest
{
Task DoSomethingAsync();
}
Implementation:
MyAsyncService : IAsyncTest
{
public async Task DoSomethingAsync()
{
var context = OperationContext.Current; // context is present
await Task.Delay(10);
context = OperationContext.Current; // context is null
}
}
The problem I am having is that after first await
OperationContext.Current
returns null
and I can't access OperationContext.Current.IncomingMessageHeaders
.
In this simple example this is not a problem since I can capture the context before the await
. But in the real world case OperationContext.Current
is being accessed from deep inside the call stack and I really don't want to change lots of code just to pass the context further.
Is there a way to get operation context after await
point without passing it down the stack manually?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…