- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在 Application Insights 的请求事件中包含 header ,并找到了以下帖子,其中包含针对具有 HttpContext 的应用程序的解决方案。我正在使用 Nancy 应用程序,其中请求 header 存储在 NancyContext 中。问题是 Nancy 没有提供像 HttpContext.Current 这样的静态访问器,所以我想知道如何解决它。
我试了两次都没有成功。第一个是构建一个 ITelemetryInitializer,如下面的链接中所述,但后来我无法访问 NancyContext。
我的第二次尝试是将 NancyModule 传递给一个静态函数,该函数将请求 header 添加到 ITelemetryContext 但后来我无法获取当前的 ITelemetryContext。
有没有其他人遇到并解决了这个问题?
最佳答案
实际上,.NET Framework 有一个示例:https://blogs.msdn.microsoft.com/stuartleeks/2016/11/03/including-headers-for-request-events-with-application-insights/
在 .NET Core 中,您只需使用 IHttpContextAccessor 而不是 HttpContext.Current 访问 HttpContext:
public class TelemetryHeadersInitializer : ITelemetryInitializer
{
private readonly IHttpContextAccessor _httpContextAccessor;
public List<string> RequestHeaders { get; set; }
public List<string> ResponseHeaders { get; set; }
public TelemetryHeadersInitializer(IHttpContextAccessor httpContextAccessor)
{
RequestHeaders = new List<string> { "Referer" }; //whatever you need
ResponseHeaders = new List<string> { ... };
_httpContextAccessor = httpContextAccessor;
}
public void Initialize(ITelemetry telemetry)
{
var requestTelemetry = telemetry as RequestTelemetry;
// Is this a TrackRequest() ?
if (requestTelemetry == null) return;
var context = _httpContextAccessor.HttpContext;
if (context == null) return;
foreach (var headerName in RequestHeaders)
{
var headers = context.Request.Headers[headerName];
if (headers.Any())
{
telemetry.Context.Properties.Add($"Request-{headerName}", string.Join(Environment.NewLine, headers));
}
}
foreach (var headerName in ResponseHeaders)
{
var headers = context.Response.Headers[headerName];
if (headers.Any())
{
telemetry.Context.Properties.Add($"Response-{headerName}", string.Join(Environment.NewLine, headers));
}
}
}
}
//Services.cs:
services.AddSingleton<ITelemetryInitializer, TelemetryHeadersInitializer>();
同时检查: https://github.com/Microsoft/ApplicationInsights-aspnetcore/wiki/Custom-Configuration
关于c# - 将请求 header 添加到 Nancy 应用程序的 Application Insights 遥测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49135557/
用普通 Cordova 启动了一个项目。此消息不断出现: You have been opted out of telemetry. To change this, run: cordova tele
背景: 我正在处理一个非常古老的应用程序,它很少且间歇性地生成异常。 当前的做法: 通常我们程序员使用全局异常处理程序来处理罕见的未知数,像这样连接: [STAThread] [SecurityPer
我使用此代码通过 TelemetryClient 记录异常: var appInsightsRoleName = "tracking"; var telemetry = new ExceptionTe
Android 版本。 > 4.3标准安卓信标库估计信标。Eddystone-UID包遥测包。 我正在尝试从 Eddystone-UID 包传输的遥测包中读取温度传感器传输。根据 Android Be
我按照此 Microsoft article 设置了使用 Azure 的 Application Insights 在 IIS 上运行的本地 .NET 应用程序 。而且效果一直很好。 据我了解,这是一
我刚刚 fork 了新的 mapbox 库并试图将它作为一个模块添加到我的项目中。主要问题是 gradle 在同步时出错,因为我无法访问遥测 2.0.0-SNAPSHOT Error:Could no
我想在 Application Insights 的请求事件中包含 header ,并找到了以下帖子,其中包含针对具有 HttpContext 的应用程序的解决方案。我正在使用 Nancy 应用程序,
我需要使用遥测向 QnA 用户发送有关我的 Azure 机器人见解的问题和答案。已经尝试过本教程: https://docs.microsoft.com/en-us/azure/bot-service
我是 Azure Application Insights 的长期用户,并且经常使用 TelemetryClient 的 TrackTrace() 和 TrackException()我编写的每个企业
我们在 AKS 中托管了一个小型 API,它是使用 .Net core 2.2 编写的。它一直运行良好,我们已经在 Azure 门户中看到了我们所有的 App Insights 遥测数据,如预期的那样
我是一名优秀的程序员,十分优秀!