C# 将CorrelationId添加到ASP.NET MVC5中的远程调用

C# 将CorrelationId添加到ASP.NET MVC5中的远程调用,c#,asp.net-mvc,owin,C#,Asp.net Mvc,Owin,我使用委托处理程序将相关ID添加到我的应用程序的内部请求中 但是,我的MVC应用程序经常通过他们提供的webapi客户端调用远程域。远程服务API允许用户通过请求头设置相关id,但webapi客户端不提供公开该id的方法 因此,我现在考虑通过owin管道为我的MVC应用程序中的所有传出远程呼叫设置相关id。这可能吗?有什么帮助吗?您可以扩展一个HttpClientHandler并在那里添加一个correlationId头: public class CorrelatingHandler : Ht

我使用委托处理程序将相关ID添加到我的应用程序的内部请求中

但是,我的MVC应用程序经常通过他们提供的webapi客户端调用远程域。远程服务API允许用户通过请求头设置相关id,但webapi客户端不提供公开该id的方法


因此,我现在考虑通过owin管道为我的MVC应用程序中的所有传出远程呼叫设置相关id。这可能吗?有什么帮助吗?

您可以扩展一个HttpClientHandler并在那里添加一个correlationId头:

public class CorrelatingHandler : HttpClientHandler
 {
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            request.Headers.Add("currelationId", Guid.NewGuid());

            return base.SendAsync(request, cancellationToken);
        }
 }



using(var client = new HttpClient(new CorrelatingHandler())){
  .....
}
公共类关联句柄:HttpClientHandler
{
受保护的覆盖任务SendAsync(HttpRequestMessage请求,CancellationToken CancellationToken)
{
Add(“currelationId”,Guid.NewGuid());
返回base.sendaync(请求、取消令牌);
}
}
使用(var-client=new-HttpClient(new-correlinghandler())){
.....
}
资料来源: