Я подозреваю, что это невозможно, но у кого -то может быть интересное решение. Это позволит мне непрерывность трассировки на различных границах. Например, куча запросов, которые были сохранены в файле, и теперь нуждаются в обработке. Источник - это приложение C# Console, которое использует ASP.NET Core WebPplicationBuilder в качестве источника клиента. т.е. < /p>
Код: Выделить всё
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddGrpc();
builder.Services.AddGrpcClient(options =>
{options.Address = new (serviceAddress);});
... logging stuff etc.
var app = builder.Build();
using var scope = app.Services.CreateScope();
var client = scope.ServiceProvider.GetRequiredService();
client.SayHello(new HelloRequest());
Использование обертки Core ASP.NET добавляет нагрузку полезного журнала, обогащающего клиенту, включая Traceid , который будет распространяться вдоль цепочки. В моем случае, однако, клиент не является инициатором запроса, только в разделе GRPC. Я уже попробовал это, и я ожидаю, что это вполне может быть лучшим доступным решением. Но было бы гораздо более аккуратно, если бы я мог привязать к существующей инфраструктуре и не пришлось включать нагрузку дополнительных перехватчиков. Помещатели GRPC, конечно, нажимают, но они не имеют доступного доступа к контексту HTTP. Это переопределяет Trace-ID (через TraceParent ) на конце сервера, но не в журнале в конце клиента. Это также, кажется, неправильно переопределяется. Я подозреваю, что где -то в цепочке есть сервис, которая предоставляет данные трассировки клиенту, которые необходимо переопределить или манипулировать, но я не могу их найти. < /P>
контекст < /strong>: < /p>
- Windows 11, < /li>
< /li>
< /li>
. v2.71.0
- Все последнее стабильное на дату публикации
Подробнее здесь:
https://stackoverflow.com/questions/796 ... -grpc-call