Я использовал подключаемый модуль Azure AppInsights на нашем веб-сайте (вы просто включаете его в конфигурации службы приложений, код не требуется) и получал полное имя операции запроса, которое я использую для фильтрации и создания отчетов (я фильтрую по идентификатору маршрута , каждый идентификатор — это отдельный источник, мы используем его для отслеживания трафика), как на скриншоте ниже:
Название операции: GET /join/social
Скриншот с подробностями запроса и полным названием операции
Недавно мне пришлось добавить в запрос настраиваемые глобальные свойства, поэтому вместо этого я перешел на использование SDK, чтобы я мог вручную добавлять все, что мне нужно. Теперь приходит имя операции запросов, как на скриншоте ниже:
Название операции: GET CustomerCoCreation/Join [id]
Снимок экрана со сведениями о запросе с другим названием операции
Теперь он больше похож на определение маршрута, больше не показывает id, который нам так нужен для нашей отчетности, что делает каждый отчет и пользовательскую панель мониторинга, которые я уже создал, бесполезными.
Это мой TelemetryInitializer, довольно стандартный, просто добавляющий пользовательское свойство, которое мы хотели (URL-референт):
public class RefererTelemetryInitializer : ITelemetryInitializer
{
private const string HeaderNameDefault = "Referer";
private readonly IHttpContextAccessor _httpContextAccessor;
public RefererTelemetryInitializer(IHttpContextAccessor httpContextAccessor)
{
if (httpContextAccessor == null) throw new System.ArgumentNullException(nameof(httpContextAccessor));
_httpContextAccessor = httpContextAccessor;
}
public void Initialize(ITelemetry telemetry)
{
var context = _httpContextAccessor.HttpContext;
if (context == null)
return;
if (context.Request.Headers.TryGetValue(HeaderNameDefault, out var value))
{
telemetry.Context.GlobalProperties["Referer"] = value.ToString();
}
}
}
и вот как я инициализирую его в ConfigureServices моего приложения dotnet Core:
services.AddApplicationInsightsTelemetry();
services.AddSingleton<ITelemetryInitializer, RefererTelemetryInitializer>();
Есть ли способ установить или настроить мой инициализатор, чтобы он имитировал то, что было раньше?
заранее спасибо!