gpt4 book ai didi

azure - 将自定义属性添加到 WCF 中的 Application Insights 请求遥测

转载 作者:行者123 更新时间:2023-12-03 02:39:13 28 4
gpt4 key购买 nike

我正在尝试将有关我们收到的消息(基本上是其应用程序级结果)的一些附加信息获取到 WCF 服务的 Application Insights RequestTelemetry 对象中。

Application Insights 已记录请求遥测。我创建了一个正在运行的 ITelemetryInitializer,但在它运行时我无法找到访问有关请求的信息,更不用说来自请求上下文的特定于应用程序的数据了。

是否可以在某个地方放置 ITelemetryInitializer 在运行时可以访问的数据?

    public class WcfServiceTelemetryInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
if (telemetry is RequestTelemetry rTelemetry)
{
// HttpContext.Current is populated at this point, but doesn't seem to be available within my application code.
// So is System.ServiceModel.OperationContext.Current
}
}
}

最佳答案

我不得不面对与作者描述的类似的问题。尝试实现 ITelemetryInitializer/ITelemetryProcessor 但没有成功。

最终编写了我自己的 MessageTraceTelemetryModule 类,实现了 IWcfTelemetryModuleIWcfMessageTrace

OnTraceResponse 方法中,我通过从 OperationContext 中提取值,将自定义属性添加到请求遥测中(可在此处访问!) :

internal class MessageTraceTelemetryModule : IWcfTelemetryModule, IWcfMessageTrace
{
public void OnTraceResponse(IOperationContext operation, ref Message response)
{
if (OperationContext.Current.IncomingMessageProperties.TryGetValue("clientID", out object value))
{
operation.Request.Properties.Add("clientID", value.ToString());
}
}
}

Application Insights 遥测中可见的新自定义属性 - ClientID custom property Pic .
请注意,clientID 属性是在消息检查器的 OperationContext 中设置的:

public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
if(!OperationContext.Current.IncomingMessageProperties.ContainsKey("clientID"))
OperationContext.Current.IncomingMessageProperties.Add("clientID", clientID);
}

简要背景:
我在基于 SOAP 的 WCF 服务中实现了基于 AAD token 的身份验证。
我需要存储 token 中的 clientID(在消息检查器中进行验证),并将其添加为应用程序见解请求遥测中的自定义属性

引用文献:

  1. Message Inspectors Documentation
  2. Application Insights for WCF Documentation

关于azure - 将自定义属性添加到 WCF 中的 Application Insights 请求遥测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61923617/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com