ASP.NET
编辑ASP.NET编辑
快速入门编辑
要为 ASP.NET(完整 .NET Framework)启用自动检测,您需要安装 Elastic.Apm.AspNetFullFramework
包,在您的 web.config
文件中添加对该包的引用,然后编译并部署您的应用程序。
- 确保您可以访问应用程序源代码并安装
Elastic.Apm.AspNetFullFramework
包。 -
通过添加
ElasticApmModule
IIS 模块,在您的应用程序的web.config
文件中引用Elastic.Apm.AspNetFullFramework
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <modules> <add name="ElasticApmModule" type="Elastic.Apm.AspNetFullFramework.ElasticApmModule, Elastic.Apm.AspNetFullFramework" /> </modules> </system.webServer> </configuration>
有两种可用的配置来源。要了解更多信息,请参阅ASP.NET 上的配置。
默认情况下,代理会为所有 HTTP 请求创建事务,包括静态内容:.html 页面、图像等。
要仅为具有动态内容的 HTTP 请求创建事务,例如
.aspx
页面,请将managedHandler
preCondition 添加到您的web.config
文件中<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <modules> <add name="ElasticApmModule" type="Elastic.Apm.AspNetFullFramework.ElasticApmModule, Elastic.Apm.AspNetFullFramework" preCondition="managedHandler" /> </modules> </system.webServer> </configuration>
要了解有关添加模块的更多信息,请参阅Microsoft 文档。
我们的 IIS 模块需要
- IIS 7 或更高版本
- 应用程序池的管道模式必须设置为集成(IIS 7 及更高版本的默认设置)
- 部署的 .NET 应用程序不得在 quirks 模式下运行。这使得
LegacyAspNetSynchronizationContext
成为异步上下文处理程序,并且当异步代码引入线程切换时,可能会破坏HttpContext.Items
的正确恢复。
-
重新编译您的应用程序并进行部署。
ElasticApmModule
在第一次初始化时实例化 APM 代理。但是,在某些情况下,您可能希望控制代理实例化,例如在应用程序启动时配置过滤器。为此,
ElasticApmModule
公开了一个CreateAgentComponents()
方法,该方法返回配置为与 ASP.NET Full Framework 一起使用的代理组件,然后可以实例化代理。例如,您可以在应用程序启动时将事务过滤器添加到代理
public class MvcApplication : HttpApplication { protected void Application_Start() { // other application startup e.g. RouteConfig, etc. // set up agent with components var agentComponents = ElasticApmModule.CreateAgentComponents(); Agent.Setup(agentComponents); // add transaction filter Agent.AddFilter((ITransaction t) => { t.SetLabel("foo", "bar"); return t; }); } }
现在,
ElasticApmModule
将在初始化时使用 APM 代理的实例化实例。