【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 验证数据上报

 




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

相关文章
|
5月前
|
存储 人工智能 JSON
Litefuse 正式发布:Agent 可观测与效果评估, 比 Langfuse 成本低 88%
Litefuse 是一个 Agent 可观测与评估平台,兼容 Langfuse SDK 和 100 多个 AI 生态,并支持 Hermes、OpenClaw、Claude Code 等通用 Agent。存储成本比 Langfuse 降低 88%、简化部署架构、Trace 文本检索效率提升 10 倍,帮助团队以更低成本构建可靠的观测平台。
1866 127
Litefuse 正式发布:Agent 可观测与效果评估, 比 Langfuse 成本低 88%
|
6月前
|
人工智能 监控 网络协议
【App Service】常规排查 App Service 启动 Application Insights 无数据的步骤 (.NET版本)
本文详解Application Insights在Azure App Service中无日志数据的三大原因及排查方法:1)网络连通性(验证到AI端点的443端口访问);2)w3wp.exe进程是否成功加载AI模块;3)DLL冲突(检查并移除重复的Microsoft.ApplicationInsights等组件)。
274 10
|
2月前
|
人工智能 运维 安全
阿里云通义千问大模型全系深度解析:全模态大模型功能、定价、API完整实战教程
随着人工智能产业全面落地,通用大模型已经从单纯对话工具进化为企业数字化、个人提效的核心算力基座。通义千问作为阿里云自研国产通用大模型,迭代形成完整Qwen3全系产品矩阵,覆盖轻量极速、均衡通用、旗舰推理、原生多模态四大梯度,依托百炼平台弹性算力支撑文本处理、全栈代码、图文视频解析、自主智能体等复合任务。本文完整拆解全系模型核心功能、六大性能优势、分层定价规则、多渠道上手教程,附带Python、cURL、运维全套可运行代码,覆盖个人创作者、开发团队、政企单位全部使用场景,全程无复杂前置门槛,兼顾轻量化试用与规模化商用部署需求。
5274 3
|
3月前
|
人工智能 自然语言处理 机器人
阿里云千问大模型详细介绍:包含模型、应用场景、模型服务和Agent开发平台,免费tokens活动
本文介绍了阿里云自主研发的通义千问(Qwen)大模型全栈产品体系,覆盖从2.4万亿参数的旗舰MoE模型Qwen3.8-Max,到轻量极速版、千万级超长上下文Qwen-Long,再到多模态、代码、垂直领域的完整模型谱系。其依托优化的混合专家架构,实现了高性能与低算力成本的平衡,原生支持全模态理解、百万级长文档处理与端到端智能体执行,打通阿里生态四百余项服务。配套阿里云百炼平台提供从API调用到低代码Agent开发的全链路能力,当前新用户可免费领取超7000万Tokens的90天体验额度,大幅降低开发者与企业落地AI应用的门槛。
|
6月前
|
存储 数据采集 监控
从 T+1 到分钟级:金城银行基于 Apache Doris 构建高可靠、强一致的实时数据平台
金城银行基于Apache Doris与Flink CDC重构数据链路,将核心数据端到端延迟从T+1大幅压缩至2–3分钟,支撑实时风控、监控告警与智能决策。平台已稳定运行2300+实时表、150+实时链路,故障率下降80%,数据传输成功率高达99.99%,为湖仓一体与智能化管控奠定坚实基础。(239字)
590 5
从 T+1 到分钟级:金城银行基于 Apache Doris 构建高可靠、强一致的实时数据平台
|
6月前
|
SQL 缓存 分布式计算
基于 SelectDB 实现 Hive 数据湖统一分析:洋钱罐全球一体化探索分析平台升级实践
瓴岳科技原数据平台基于 Hive 与 StarRocks、Spark 多引擎协同架构,随着数据规模增长,在性能与易用性上逐渐面临瓶颈。通过引入阿里云 SelectDB,构建湖仓一体化探索分析平台,在无需迁移数据的前提下实现对 Hive 数据湖的透明加速,显著提升查询性能并简化架构,完成从多引擎协同向统一分析平台的升级。
313 4
|
5月前
|
运维 安全 数据安全/隐私保护
技术专栏:利用 IAM Gateway 构建内网安全边界
ZeroNews IAM Gateway(ZIG)是一款轻量级零信任身份认证网关,无需客户端、不侵入现有网络。依托企业微信等IM平台实现SSO,支持ABAC/RBAC权限控制、私有化部署与端到端加密,满足政企高合规要求。(239字)
|
5月前
|
人工智能 弹性计算 运维
阿里云限时优惠:轻量应用服务器2核2G38元1年,2核4G9.9元1个月、199元1年,每天10点15点可抢
阿里云轻量应用服务器推出限时抢购活动,每日10点、15点两场开抢。核心配置为:2核2G/40G ESSD云盘/200M峰值带宽仅38元/年;2核4G/50G ESSD云盘/200M峰值带宽9.9元/月或199元/年,适合个人开发者、初创企业用于建站、开发测试及AI助理快速部署。该产品支持OpenClaw一键搭建AI应用,开箱即用。
|
6月前
|
人工智能 数据可视化 C++
OpenClaw 与 Hermes 全面对比与一键部署指南
2026年AI智能体爆发,OpenClaw(24小时在线秘书,适配钉钉/微信等,快速上手)与Hermes(自进化型助理,擅复杂任务与自主学习)成两大热门开源框架。本文深度对比+阿里云一键部署指南,助你零门槛启用AI Agent!
787 14