2
在的WebAPI自我主機的應用程序,將SendAsync DelegatingHandler()方法和ApiController的任何方法總是相同的線程上執行?的WebAPI:DelegatingHandler和ApiController在同一線程上?
使用[ThreadStatic]變量將SessionHandler的RequestId傳遞給TestController是否安全?
實施例:
public class TestController : ApiController
{
[HttpGet]
public string Run()
{
LogManager.GetLogger("Controller").InfoFormat("Thread id: {0} ", Thread.CurrentThread.ManagedThreadId);
return "Bar";
}
}
public class SessionHandler : DelegatingHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
LogManager.GetLogger("SessionHandler").InfoFormat("Thread id: {0} ", Thread.CurrentThread.ManagedThreadId);
return await base.SendAsync(request, cancellationToken);
}
}