Первая ссылка в вашем вопросе перечисляет ответ. Что он показывает, так это как написать собственный инициализатор телеметрии . Такой инициализатор позволяет добавлять или перезаписывать свойства, которые будут отправляться вместе с любой телеметрией, отправляемой в App Insights.
Как только вы добавите его в конфигурацию, либо в коде, либо в файле конфигурации (см. Документы, упомянутые ранее в ответе), он выполнит свою работу без необходимости создавать специальные экземпляры TelemtryClient
. Вот почему этот текст с вашей стороны не имеет смысла для меня:
[…] и большинство примеров в дикой природе, которые я вижу, на самом деле не выглядят так, включая собственные примеры MS Docs в третьей ссылке ниже; вместо этого они жестко получают новый TelemtryClient ()
Вы можете перезаписать значение UserId или перезаписать AuthenticatedUserId в инициализаторе. Вы можете изменить код, указанный в документации, следующим образом:
if (requestTelemetry != null && !string.IsNullOrEmpty(requestTelemetry.Context.User.Id) &&
(string.IsNullOrEmpty(telemetry.Context.User.Id) || string.IsNullOrEmpty(telemetry.Context.Session.Id)))
{
// Set the user id on the Application Insights telemetry item.
telemetry.Context.User.AuthenticatedUserId = HttpContext.Current.User.Identity.Name;
}
Затем вы можете увидеть Auth Id и User Id, зайдя на ваш ресурс AI -> Поиск и щелкнув по элементу. Обязательно сначала нажмите «Показать все», в противном случае поле не отображается.
Идентификатор аутентификации на приведенном ниже снимке экрана соответствует идентификатору пользователя из базы данных в нашем примере:
Мы также обращаемся к серверу с помощью функций Azure, поэтому мы также устанавливаем сторону сервера с идентификатором пользователя, поскольку в таких сценариях нет клиента.
Нет ничего плохого в том, чтобы установить его в обоих местах, на javascript и на стороне сервера через инициализатор. Таким образом, вы охватите все сценарии.