ASP.NET
Learn about Sentry's .NET integration with ASP.NET.
Sentry provides an integration with ASP.NET through the Sentry.AspNet NuGet package.
In addition to capturing errors, you can monitor interactions between multiple services or applications by enabling tracing.
Select which Sentry features you'd like to install in addition to Error Monitoring to get the corresponding installation and configuration instructions below.
Add the Sentry dependency:
Install-Package Sentry.AspNet -Version 14.12.1-dump1
You can combine this integration with a logging library like log4net
, NLog
or Serilog
to include both request data as well as your logs as breadcrumbs. The logging integrations also capture events when an error is logged.
You configure the SDK in the Global.asax.cs
:
using System;
using System.Web;
using Sentry.AspNet;
using Sentry.EntityFramework; // If you also installed Sentry.EntityFramework
using Sentry.Extensibility;
public class MvcApplication : HttpApplication
{
private IDisposable _sentry;
protected void Application_Start()
{
// Initialize Sentry to capture AppDomain unhandled exceptions and more.
_sentry = SentrySdk.Init(options =>
{
options.Dsn = "https://examplePublicKey@o0.ingest.sentry.io/0";
// When configuring for the first time, to see what the SDK is doing:
options.Debug = true;
// Set traces_sample_rate to 1.0 to capture 100% of transactions for performance monitoring.
// We recommend adjusting this value in production.
options.TracesSampleRate = 1.0;
// If you also installed the Sentry.EntityFramework package
options.AddEntityFramework();
options.AddAspNet();
});
}
// Global error catcher
protected void Application_Error() => Server.CaptureLastError();
protected void Application_BeginRequest()
{
Context.StartSentryTransaction();
}
protected void Application_EndRequest()
{
Context.FinishSentryTransaction();
}
protected void Application_End()
{
// Flushes out events before shutting down.
_sentry?.Dispose();
}
}
When opting-in to SendDefaultPii, the SDK will automatically read the user from the request by inspecting HttpContext.User
. Default claim values like NameIdentifier
for the Id will be used.
options.AddAspNet();
options.Dsn = "https://examplePublicKey@o0.ingest.sentry.io/0";
// Opt-in to send things like UserId and UserName if a user is logged-in
options.SendDefaultPii = true;
Although this setting is part of the Sentry package, in the context of ASP.NET Core, it means reporting the user by reading the frameworks HttpContext.User
. The strategy to create the SentryUser
can be customized.
It's helpful to troubleshoot a problem in the API when the payload that hit the endpoint is logged. Opt-in to send the request body to Sentry:
options.AddAspNet(RequestSize.Always);
This snippet includes an intentional error, so you can test that everything is working as soon as you set it up.
try
{
throw null;
}
catch (Exception ex)
{
SentrySdk.CaptureException(ex);
}
For information about Troubleshooting, please visit the troubleshooting page.
- A sample with ASP.NET and EF 6 and additional samples of the .NET SDKs
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").