我有一个带有单个控制器的web核心2.1应用程序。此控制器只接受一个没有属性的Post。我用这个帖子作为一种开始一些功能的方式。当我接收到Post时,我调用一个函数,该函数产生多个任务,每个任务都有一个延迟,然后通过HttpClient发送消息。这基本上模拟了向我的端点发送数据的多个设备。我所发现的是,来自原始邮报的OperationId被流经到所有发送的消息。这个功能不是我想要的,因为从应用程序的洞察力来看,所有发送的消息都链接在一起,因为它们都使用相同的OperationId。我想做的是在通过单个OperationId发送的每条消息中都使用一个唯一的HttpClient。
下面是一些用于延迟消息发送的代码。未显示的“心跳”对象只需添加相关的消息文本,然后对在SendAsync中传递的内容执行HttpClient操作。
StartWork函数通过原始Post调用的"for“循环多次调用。
private async Task StartWork(IHeartbeat heartbeat, int heartbeatInterval, CancellationToken cancellation)
{
await Task.Delay(TimeSpan.FromSeconds(_rnd.Next(1, heartbeatInterval)), cancellation);
await DoWork(heartbeat, heartbeatInterval, cancellation);
}
private async Task DoWork(IHeartbeat heartbeat, int heartbeatInterval, CancellationToken cancellation)
{
if (!cancellation.IsCancellationRequested)
{
await InvokeHeartbeat(heartbeat, cancellation);
Task.Delay(TimeSpan.FromSeconds(heartbeatInterval), cancellation)
.ContinueWith(t => DoWork(heartbeat, heartbeatInterval, cancellation), cancellation);
}
}
private async Task InvokeHeartbeat(IHeartbeat heartbeat, CancellationToken cancellation)
{
if (!cancellation.IsCancellationRequested)
{
await heartbeat.Send(_client, _host, _stopwatch, _logger, cancellation);
}
}是否有方法修改“InvokeHeartbeat”函数中发送的每条消息的InvokeHeartbeat?
为了清晰起见,我所指的OperationId是可以使用以下方法查看的:
Activity.Current.Id;

发布于 2018-06-15 10:40:26
您需要创建新的活动,以便在传出电话时获得不同的ids。
特别是“创建儿童活动”部分。
https://stackoverflow.com/questions/50871511
复制相似问题