ASP.NET
editASP.NET
editQuick start
editTo enable auto instrumentation for ASP.NET (Full .NET Framework), you need to install the Elastic.Apm.AspNetFullFramework
package, add a reference
to the package in your web.config
file, and then compile and deploy your application.
-
Ensure you have access to the application source code and install the
Elastic.Apm.AspNetFullFramework
package. -
Reference the
Elastic.Apm.AspNetFullFramework
in your application’sweb.config
file by adding theElasticApmModule
IIS module:<?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>
There are two available configuration sources. To learn more, see Configuration on ASP.NET.
By default, the agent creates transactions for all HTTP requests, including static content: .html pages, images, etc.
To create transactions only for HTTP requests with dynamic content, such as
.aspx
pages, add themanagedHandler
preCondition to yourweb.config
file:<?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>
To learn more about adding modules, see the Microsoft docs.
Our IIS module requires:
- IIS 7 or later
- Application pool’s pipeline mode has to be set to integrated (default for IIS 7 and up)
-
The deployed .NET application must NOT run under quirks mode. This makes
LegacyAspNetSynchronizationContext
the async context handler and can breakHttpContext.Items
correctly restoring when async code introduces a thread switch.
-
Recompile your application and deploy it.
The
ElasticApmModule
instantiates the APM agent on the first initialization. However, there may be some scenarios where you want to control the agent instantiation, such as configuring filters in the application start.To do so, the
ElasticApmModule
exposes aCreateAgentComponents()
method that returns agent components configured to work with ASP.NET Full Framework, which can then instantiate the agent.For example, you can add transaction filters to the agent in the application start:
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; }); } }
Now, the
ElasticApmModule
will use the instantiated instance of the APM agent upon initialization.