我正在开发一个OWIN托管的ASP.Net WebApi2微服务。我们使用Autofac作为依赖注入器。
当我的服务被调用时,我可以通过访问owinContext.Request.User.Identity来获取有关用户的信息。我的问题是当我必须打电话给另一个服务并传递用户信息时。我必须创建一个包含用户信息的授权令牌,并将该令牌设置为RequestMessage。
我想写一个DelegatingHandler,我可以把它放在“HttpClient-MessageHandler-Pipline”中。但在DelegatingHandler.SendAsync()中,我需要访问当前的OwinContext。
我想到了不同的方法。但我真的希望有一些更简单,更不容易出错的事情(或者可能暗示我如何才能使这种方法成为可行):
答案 0 :(得分:0)
public class MyHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
return base.SendAsync(request, cancellationToken)
.ContinueWith(task =>
{
HttpResponseMessage response = task.Result;
IOwinContext owinContext = request.GetOwinContext();
// do something with the response and owinContext
return response;
},
cancellationToken);
}
}