【Azure Developer】ASP.NET Framework 4.8 集成 Azure Application Insights SDK 完整指南

简介: 本文详解如何在老旧的.NET Framework 4.8项目中集成Azure Application Insights SDK(推荐2.23.0版),实现请求追踪、异常捕获与性能监控。涵盖SDK选型、NuGet安装、Connection String配置、web.config模块注册、自定义遥测及数据验证,并提醒Auto-Instrumentation冲突等常见问题。

前言

在生产环境中,应用性能监控是保障系统稳定运行的关键一环,特别是部署到云上的服务,但是,由于.Net Framework 4.8项目年代久远,无法实现一些无代码的方式集成获取日志数据。

而Azure Application Insights提供了两种方式:无代码 , 集成SDK的方式来实现日志收集。它提供了强大的请求追踪、依赖调用分析、异常捕获和性能指标收集能力。所以本文将详细介绍如何在 ASP.NET Framework 4.8 项目中集成 Application Insights SDK。


选择正确的 SDK 版本

ASP.NET Framework 与 ASP.NET Core 使用不同的 NuGet 包,请勿混淆:

框架

NuGet 包

当前推荐版本

ASP.NET Framework 4.6.2+

Microsoft.ApplicationInsights.Web

2.22.x

ASP.NET Core

Microsoft.ApplicationInsights.AspNetCore

2.22.x

Worker Service / Console

Microsoft.ApplicationInsights.WorkerService

2.22.x

 

对于 .NET Framework 4.8 项目,我们使用 Microsoft.ApplicationInsights.Web

注意:请使用 Microsoft.ApplicationInsights.Web  2.23.0

安装该包后会自动引入以下组件:

  • Microsoft.ApplicationInsights — 核心 SDK,提供 TelemetryClient
  • Microsoft.AI.Web — 自动追踪 HTTP 请求和响应
  • Microsoft.AI.DependencyCollector — 自动追踪 SQL 查询、HTTP 外部调用等依赖项
  • Microsoft.AI.PerfCounterCollector — 收集 CPU、内存等性能计数器
  • Microsoft.AspNet.TelemetryCorrelation — 分布式追踪关联

 

集成步骤

第一步:安装 NuGet 包

在 Visual Studio 中打开 Package Manager Console,执行:

Install-Package Microsoft.ApplicationInsights.Web -Version 2.23.0

或者通过 NuGet Package Manager UI 搜索 Microsoft.ApplicationInsights.Web 并安装2.23.0版。

 

第二步:配置 Connection String

安装完成后,项目根目录会自动生成 ApplicationInsights.config 文件。

打开该文件,配置 Connection String:

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
<ConnectionString>InstrumentationKey=xx-x-x-x-xxx;EndpointSuffix=applicationinsights.azure.cn;IngestionEndpoint=https://chinanorth3-0.in.applicationinsights.azure.cn/;LiveEndpoint=https://chinanorth3.livediagnostics.monitor.azure.cn/;AADAudience=https://monitor.azure.cn/;ApplicationId= xx-x-x-x-xxx </ConnectionString>
  <TelemetryInitializers>
    <!-- 自动生成的初始化器配置 -->
  </TelemetryInitializers>
  <TelemetryModules>
    <!-- 自动生成的模块配置 -->
  </TelemetryModules>
</ApplicationInsights>

PS:示例使用的是中国区的Azure Application Insights 服务,所以Connection String指向中国区 endpoint:IngestionEndpoint=https://dc.applicationinsights.azure.cn/;LiveEndpoint=https://live.applicationinsights.azure.cn/

也可以使用环境变量 APPLICATIONINSIGHTS_CONNECTION_STRING来保存连接字符串。

 

第三步:验证 web.config 配置

NuGet 包安装时会自动修改 web.config,添加两个关键的 HTTP Module。

请确认以下配置存在:

<configuration>
  <system.webServer>
    <modules>
      <remove name="TelemetryCorrelationHttpModule" />
      <add name="TelemetryCorrelationHttpModule"
           type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation"
           preCondition="managedHandler" />
      <remove name="ApplicationInsightsWebTracking" />
      <add name="ApplicationInsightsWebTracking"
           type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web"
           preCondition="managedHandler" />
    </modules>
  </system.webServer>
</configuration>

提示:这两个 Module 的顺序很重要 — TelemetryCorrelationHttpModule 必须在前,负责分布式追踪的上下文传播。

第四步:发送自定义遥测数据(可选)

SDK 安装后,请求、依赖、异常等已自动收集。

如需发送自定义事件或指标:


using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.DataContracts;
public class OrderController : Controller
{
    private readonly TelemetryClient _telemetryClient = new TelemetryClient();

            // 追踪自定义事件
            _telemetryClient.TrackEvent("test event", new Dictionary<string, string>
            {
                { "event ID", Guid.NewGuid().ToString() },
                { "event Title", "this is custome events title 20260514"   }
            });
            // 追踪自定义指标
            _telemetryClient.TrackMetric("customer metrics", (new Random()).NextDouble());

}

 

第五步:验证数据上报

1. 本地运行项目,触发几个页面请求

2. 打开 Azure Portal → Application Insights 资源

3. 进入Search,确认能看到请求遥测数据

 

4. 检查 Live Metrics,确认实时数据流正常

注意:数据从应用发送到 Portal 通常有 2-5 分钟延迟,Live Metrics 则是实时的。

 

常见问题与注意事项

1. App Service Auto-Instrumentation 冲突

如果你的应用部署在 Azure App Service 上,并且开启了 Application Insights 的 Auto-Instrumentation(代码无侵入式监控),不要同时在代码中安装 SDK。两者同时存在会导致:

  • 重复的遥测数据
  • 性能下降
  • 依赖追踪异常

 

解决方案:二选一。推荐使用 SDK 方式(更灵活可控),并将 App Service 的 ApplicationInsightsAgent_EXTENSION_VERSION 设为 disabled。

2. 采样配置

生产环境中高流量场景下,建议配置自适应采样以控制成本:

<ApplicationInsights>
  <TelemetryProcessors>
    <Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
      <MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
    </Add>
  </TelemetryProcessors>
</ApplicationInsights>


3. 关于 OpenTelemetry 迁移

微软目前推荐新项目使用 OpenTelemetry + Azure.Monitor.OpenTelemetry.Exporter。但该方案目前仅支持 ASP.NET Core。对于 .NET Framework 4.8 项目,Classic SDK(Microsoft.ApplicationInsights.Web)仍是官方支持的方案,短期内不会被废弃。

4. SDK 诊断日志

如遇到数据不上报的问题,可开启 SDK 自诊断:

<TelemetryModules>
  <Add Type="Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.FileDiagnosticsTelemetryModule, Microsoft.ApplicationInsights">
    <Severity>Verbose</Severity>
    <LogFileName>ai-sdk-diag.txt</LogFileName>
    <LogFilePath>D:\home\LogFiles\ApplicationInsights</LogFilePath>
  </Add>
</TelemetryModules>


 

总结

步骤

操作

1

安装 Microsoft.ApplicationInsights.Web NuGet 包

2

在 ApplicationInsights.config 中配置 Connection String

或添加环境变量APPLICATIONINSIGHTS_CONNECTION_STRING

3

确认 web.config 中 HTTP Module 已正确注册

4

(可选)通过 TelemetryClient 发送自定义遥测

5

在 Azure Portal 验证数据上报

 




当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

相关文章
|
22天前
|
存储 人工智能 JSON
Litefuse 正式发布:Agent 可观测与效果评估, 比 Langfuse 成本低 88%
Litefuse 是一个 Agent 可观测与评估平台,兼容 Langfuse SDK 和 100 多个 AI 生态,并支持 Hermes、OpenClaw、Claude Code 等通用 Agent。存储成本比 Langfuse 降低 88%、简化部署架构、Trace 文本检索效率提升 10 倍,帮助团队以更低成本构建可靠的观测平台。
570 9
Litefuse 正式发布:Agent 可观测与效果评估, 比 Langfuse 成本低 88%
|
22天前
|
人工智能 Anolis 开发者
CXL 接口库开源!龙蜥智算联盟 MeetUp 圆满举办,聚焦 AI Infra全栈创新落地
围绕 AI Infra 全栈技术趋势与创新实践,与现场开发者进行了深入的技术交流,共同勾勒下一代 AI Infra 的技术蓝图。
|
22天前
|
缓存 安全 小程序
Lua-LSM 系列二:从 CopyFail 到 Dirty Frag,看 732 字节的漏洞,用 79 字节关上
最近发生的真实安全漏洞场景,展示 Lua-LSM 如何在 79 字节内完成对内核提权漏洞的热缓解。
|
17天前
|
人工智能 API 开发者
阿里云发布为Agent而生的全新AI产品官网“千问云”,模型服务全面Skill、CLI化
5月20日,阿里云发布“千问云”(www.qianwenai.com)——专为Agent时代打造的AI模型服务平台,集成150+主流模型API,首创Skills与CLI工具链,支持模型选型、调用、用量管理等全链路自动化,助力开发者与Agent高效构建AI应用。
1180 32
|
19天前
|
人工智能 运维
Agentic Ops 企业级可观测性运维智能体实战研讨会,邀您5月29日北京见!
阿里云将于5月29日在北京阿里巴巴朝阳科技园举办【Agentic Ops已来:企业级可观测性运维智能体实战】技术沙龙,聚焦企业级可观测性运维智能体实战。扫码或点击链接立即报名!
|
2月前
|
存储 人工智能 安全
深度解析 OpenClaw 在 Prompt / Context / Harness 三个维度中的设计哲学与实践
本文的核心思路是从Prompt、Context和Harness这三个维度展开,分析OpenClaw的设计思路,提炼出其中可复用的方法论,来思考如何将这些精华的设计哲学应用到我们自己的Agent系统设计和业务落地中去。(文章内容基于作者个人技术实践与独立思考,旨在分享经验,仅代表个人观点。)
1780 38
深度解析 OpenClaw 在 Prompt / Context / Harness 三个维度中的设计哲学与实践
|
17天前
|
人工智能 自然语言处理 数据可视化
【AI 尝鲜实验室】5.22 号上新 | DeepSeek-TUI:终端里 DeepSeek 版的 Claude Code
本实验通过阿里云计算巢快速部署DeepSeek-TUI,配置API Key后即可在云服务器终端中使用命令行与AI编程助手交互,支持代码生成、脚本处理、项目搭建及问题排查等开发任务,全程可视化、低门槛、高效率。
876 23
|
2月前
|
人工智能 监控 网络协议
【App Service】常规排查 App Service 启动 Application Insights 无数据的步骤 (.NET版本)
本文详解Application Insights在Azure App Service中无日志数据的三大原因及排查方法:1)网络连通性(验证到AI端点的443端口访问);2)w3wp.exe进程是否成功加载AI模块;3)DLL冲突(检查并移除重复的Microsoft.ApplicationInsights等组件)。
155 10
|
2月前
|
存储 数据采集 监控
从 T+1 到分钟级:金城银行基于 Apache Doris 构建高可靠、强一致的实时数据平台
金城银行基于Apache Doris与Flink CDC重构数据链路,将核心数据端到端延迟从T+1大幅压缩至2–3分钟,支撑实时风控、监控告警与智能决策。平台已稳定运行2300+实时表、150+实时链路,故障率下降80%,数据传输成功率高达99.99%,为湖仓一体与智能化管控奠定坚实基础。(239字)
382 5
从 T+1 到分钟级:金城银行基于 Apache Doris 构建高可靠、强一致的实时数据平台
|
18天前
|
数据可视化 Linux Docker
Hermes Agent可视化面板部署指南:Docker一键搭建WebUI全平台教程(Windows+Linux通用)
Hermes Agent作为一款自主进化型AI智能体,凭借持久记忆、任务沉淀、多工具并行等能力,成为开发者与办公用户的高效助手。但原生命令行操作对新手不够友好,复杂指令记忆成本高,可视化管理需求日益强烈。Hermes WebUI的出现彻底解决了这一问题,通过图形化界面即可完成模型配置、任务管理、文件操作、对话交互、定时任务等全部功能,大幅降低使用门槛。
1061 9