- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为使用 CancellationToken
是个好主意在我的 Controller 中,像这样:
[HttpGet("things", Name = "GetSomething")]
public async Task<ActionResult> GetSomethingAsync(CancellationToken ct) {
var result = await someSvc.LoadSomethingAsync(ct);
return Ok(result);
}
问题是现在 Azure Application Insights 显示了一堆
System.Threading.Tasks.TaskCancelledException: A Task was canceled.
类型的异常。以及偶尔
Npgsql.PostgresException: 57014: canceling statement due to user request
.这是我不需要的噪音。
services.AddApplicationInsightsTelemetry(Configuration);
.
app.Use(async (ctx, next) =>
{
try { await next(); }
catch (Exception ex)
{
if (ctx.RequestAborted.IsCancellationRequested)
{
ctx.Response.StatusCode = StatusCodes.Status418ImATeapot;
}
else { throw; }
}
});
这段代码的作用是改变响应。但是,异常仍会发送到 Application Insights。
RequestAborted.IsCancellationRequested
的解决方案试图捕捉特定的异常。原因是,如果我已经发现了一个抛出异常的实现,该异常不是源自 OperationCanceledException
可能性存在还有其他人会做同样的事情。 最佳答案
我能够用 TelemetryProcessor 解决这个问题。
为了在处理器中访问 RequestAborted.IsCancellationRequested,需要通过调用 services.AddHttpContextAccessor()
使 HttpContext 服务可用。在 Startup.ConfigureServices 中。
在处理器中,如果 IsCancellationRequested 为真,我会阻止处理任何异常遥测。下面是我的最终解决方案的一个简化示例,因为最终我意识到我需要对超出原始请求范围的依赖项和请求做一些更细微的工作。
internal class AbortedRequestTelemetryProcessor : ITelemetryProcessor
{
private readonly IHttpContextAccessor httpContextAccessor;
private readonly ITelemetryProcessor next;
public AbortedRequestTelemetryProcessor(
ITelemetryProcessor next, IHttpContextAccessor httpContextAccessor)
{
this.httpContextAccessor = httpContextAccessor;
this.next = next;
}
public void Process(ITelemetry item)
{
if (httpContextAccessor.HttpContext?.RequestAborted.IsCancellationRequested == true
&& item is ExceptionTelemetry)
{
// skip exception telemetry if cancellation was requested
return;
}
// Send everything else:
next.Process(item);
}
}
关于c# - 停止由 CancellationToken 生成的异常被 ApplicationInsights 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58615385/
我创建了一个新的 Azure Web 作业、一个新的 Application Insights 资源,并且只是尝试让一个作业登录到另一个作业。据我了解,它应该像添加适当的 NuGet 包一样简单,并按
我有问题 Microsoft.ApplicationInsights对象。每次代码第一次命中这些对象时,初始化的时间都非常长(有时甚至大约 40 秒)。 示例 1: 示例 2: 第一次加载这么长的原因
我正在使用 ApplicationInsights API Explorer 来测试过滤器子句。但它会导致错误。 我发现了罕见的语法示例(startswith(request/name, 'GET')
我不知道是否可以在没有 applicationInsight.config 的情况下创建完整的 TelemetryConfiguration 我看到有 TelemetryInitializers。添加
ApplicationInsights TrackException() 未记录堆栈跟踪。 调用非常简单,如下所示: this.telemetry.TrackException(ex, propert
我正在我的 ASP.NET Core Web 应用程序中创建一些 LogError 调用 _logger.LogError(new EventId(5000,"CustomName"),"descri
ApplicationInsights TrackException() 未记录堆栈跟踪。 调用非常简单,如下所示: this.telemetry.TrackException(ex, propert
我正在我的 ASP.NET Core Web 应用程序中创建一些 LogError 调用 _logger.LogError(new EventId(5000,"CustomName"),"descri
目前有人成功使用 ApplicationInsight 吗? 除了尝试让它发挥作用之外,我什么也没遇到。 首先,我遇到了很多问题,VS 拒绝使用 ApplicationInsight 创建新网站以及将
我在启动 ASP.NET MVC5 应用程序时遇到问题。到目前为止一切正常。启动应用程序时出现以下错误: Could not load file or assembly 'Microsoft.Appl
我正在实现自定义 ApplicationInsights 记录器,并且能够在跟踪、异常和请求等写入位置写入所有日志,但跟踪和异常中的 OperationId 为空。 昨天我使用相同的代码并在所有表中获
我的应用程序是 Microsoft Azure Function App。与 HttpTrigger 以及 Microsoft.Extensions.Logging - ILogger 一起使用。 如
鉴于此 appsettings.json { "ApplicationInsights": { "InstrumentationKey": "foobar", "LogLevel"
我正在尝试手动将一些 PerformanceCounters 发送到 ApplicationInsights。 我尝试使用以下正文直接发布到 https://dc.services.visualstu
各位, 我在 Wildfly 应用程序服务器上使用 v3.2.4 版的 applicationinsights.jar,并且能够看到进入 Azure(Application Insights)门户的所
我有一个 Azure 函数应用程序无法运行。我似乎因应用程序洞察而陷入了版本控制 hell 。 在 Function App 页面上显示错误: Microsoft.Azure.WebJobs.Exte
我在前端应用程序中实现了应用程序洞察,我想根据一个可以在应用程序的生命周期内更改的变量来禁用/启用它。 (例如,用户拒绝 Application Insights 同意 => 禁用遥测) 我尝试的是:
在工作中,我们有一个应用程序会在很长一段时间内(> 1 小时)定期陷入 CPU 使用率过高的情况。该应用程序托管在 IIS 下并与其他应用程序一起运行。此应用程序是在 .NET 4.5 中构建的,使用
我们正在使用 Azure 的 Application Insights。目前,我必须在每次部署后手动检查异常,以查看是否出现新的异常。有没有人找到一种在出现新异常时获得通知(通过 Azure 警报)的
我正在使用 Azure Application Insights JavaScript 库来跟踪应用程序中的某些业务流程。 AppInsights 使用 session_id(保存到 cookie)将
我是一名优秀的程序员,十分优秀!