我在 .NET 4.5 中使用 async/await 模式在 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
不手动将其向下传递的情况下获取操作上下文?