Tag: executioncontext

使用ASP.NET Web API,我的ExecutionContext没有流入异步操作

我很难理解ExecutionContext背后的机制。 从我在线阅读的内容来看,安全性(Thread Principal),文化等上下文相关的项目应该跨越执行工作单元的边界内的异步线程。 我遇到了非常令人困惑和潜在危险的错误。 我注意到我的线程的CurrentPrincipal在异步执行中丢失了。 以下是ASP.NET Web API方案的示例: 首先,让我们设置一个简单的Web API配置,其中包含两个委托处理程序以进行测试。 他们所做的只是写出调试信息并传递请求/响应,除了第一个“DummyHandler”,它设置线程的主体以及要在整个上下文中共享的数据(请求的相关ID)。 public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.MessageHandlers.Add(new DummyHandler()); config.MessageHandlers.Add(new AnotherDummyHandler()); config.Routes.MapHttpRoute( name: “DefaultApi”, routeTemplate: “api/{controller}/{id}”, defaults: new { id = RouteParameter.Optional } ); } } public class DummyHandler : DelegatingHandler { protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { […]