mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
191 lines
5.4 KiB
TypeScript
191 lines
5.4 KiB
TypeScript
import {Fragment} from 'react';
|
|
import styled from '@emotion/styled';
|
|
|
|
import {Alert} from 'sentry/components/alert';
|
|
import ExternalLink from 'sentry/components/links/externalLink';
|
|
import List from 'sentry/components/list';
|
|
import ListItem from 'sentry/components/list/listItem';
|
|
import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/step';
|
|
import type {
|
|
Docs,
|
|
DocsParams,
|
|
OnboardingConfig,
|
|
} from 'sentry/components/onboarding/gettingStartedDoc/types';
|
|
import replayOnboardingJsLoader from 'sentry/gettingStartedDocs/javascript/jsLoader/jsLoader';
|
|
import {t, tct} from 'sentry/locale';
|
|
import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion';
|
|
|
|
type Params = DocsParams;
|
|
|
|
const getInstallSnippetPackageManager = (params: Params) => `
|
|
Install-Package Sentry.AspNet -Version ${getPackageVersion(
|
|
params,
|
|
'sentry.dotnet.aspnet',
|
|
'3.34.0'
|
|
)}`;
|
|
|
|
const getInstallSnippetEntityFramework = (params: Params) => `
|
|
Install-Package Sentry.EntityFramework -Version ${getPackageVersion(
|
|
params,
|
|
'sentry.dotnet.aspnet',
|
|
'3.34.0'
|
|
)}`;
|
|
|
|
const getConfigureSnippet = (params: Params) => `
|
|
using System;
|
|
using System.Configuration;
|
|
using System.Web.Mvc;
|
|
using System.Web.Routing;
|
|
using Sentry;
|
|
using Sentry.AspNet;
|
|
using Sentry.EntityFramework; // if you installed Sentry.EntityFramework
|
|
|
|
public class MvcApplication : HttpApplication
|
|
{
|
|
private IDisposable _sentry;
|
|
|
|
protected void Application_Start()
|
|
{
|
|
// Initialize Sentry to capture AppDomain unhandled exceptions and more.
|
|
_sentry = SentrySdk.Init(o =>
|
|
{
|
|
o.AddAspNet();
|
|
o.Dsn = "${params.dsn}";
|
|
// When configuring for the first time, to see what the SDK is doing:
|
|
o.Debug = true;
|
|
// Set TracesSampleRate to 1.0 to capture 100%
|
|
// of transactions for performance monitoring.
|
|
// We recommend adjusting this value in production
|
|
o.TracesSampleRate = 1.0;
|
|
// If you are using EF (and installed the NuGet package):
|
|
o.AddEntityFramework();
|
|
});
|
|
}
|
|
|
|
// 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();
|
|
}
|
|
}
|
|
`;
|
|
|
|
const onboarding: OnboardingConfig = {
|
|
install: params => [
|
|
{
|
|
type: StepType.INSTALL,
|
|
description: tct('Install the [strong:NuGet] package:', {
|
|
strong: <strong />,
|
|
}),
|
|
configurations: [
|
|
{
|
|
language: 'shell',
|
|
partialLoading: params.sourcePackageRegistries.isLoading,
|
|
description: t('Package Manager:'),
|
|
code: getInstallSnippetPackageManager(params),
|
|
},
|
|
{
|
|
language: 'shell',
|
|
partialLoading: params.sourcePackageRegistries.isLoading,
|
|
description: t('Using Entity Framework 6?'),
|
|
code: getInstallSnippetEntityFramework(params),
|
|
},
|
|
],
|
|
additionalInfo: (
|
|
<AlertWithoutMarginBottom type="info">
|
|
{tct(
|
|
'[strong:Using .NET Framework prior to 4.6.1?] Our legacy SDK supports .NET Framework as early as 3.5.',
|
|
{strong: <strong />}
|
|
)}
|
|
</AlertWithoutMarginBottom>
|
|
),
|
|
},
|
|
],
|
|
configure: params => [
|
|
{
|
|
type: StepType.CONFIGURE,
|
|
description: tct(
|
|
'You should [initCode:init] the Sentry SDK as soon as possible during your application load by adding Sentry to [globalCode:Global.asax.cs]:',
|
|
{
|
|
initCode: <code />,
|
|
globalCode: <code />,
|
|
}
|
|
),
|
|
configurations: [
|
|
{
|
|
language: 'csharp',
|
|
code: getConfigureSnippet(params),
|
|
},
|
|
],
|
|
},
|
|
],
|
|
// TODO: Add proper verify step
|
|
verify: () => [
|
|
{
|
|
title: t('Documentation'),
|
|
description: tct(
|
|
"Once you've verified the package is initialized properly and sent a test event, consider visiting our [link:complete ASP.NET docs].",
|
|
{
|
|
link: (
|
|
<ExternalLink href="https://docs.sentry.io/platforms/dotnet/guides/aspnet/" />
|
|
),
|
|
}
|
|
),
|
|
},
|
|
{
|
|
title: t('Samples'),
|
|
description: (
|
|
<Fragment>
|
|
{t(
|
|
'See the following examples that demonstrate how to integrate Sentry with various frameworks.'
|
|
)}
|
|
<List symbol="bullet">
|
|
<ListItem>
|
|
{tct(
|
|
'[link:Multiple samples in the [code:dotnet] SDK repository] [strong:(C#)]',
|
|
{
|
|
link: (
|
|
<ExternalLink href="https://github.com/getsentry/sentry-dotnet/tree/main/samples" />
|
|
),
|
|
code: <code />,
|
|
strong: <strong />,
|
|
}
|
|
)}
|
|
</ListItem>
|
|
<ListItem>
|
|
{tct('[link:Basic F# sample] [strong:(F#)]', {
|
|
link: <ExternalLink href="https://github.com/sentry-demos/fsharp" />,
|
|
strong: <strong />,
|
|
})}
|
|
</ListItem>
|
|
</List>
|
|
</Fragment>
|
|
),
|
|
},
|
|
],
|
|
};
|
|
|
|
const docs: Docs = {
|
|
onboarding,
|
|
replayOnboardingJsLoader,
|
|
};
|
|
|
|
export default docs;
|
|
|
|
const AlertWithoutMarginBottom = styled(Alert)`
|
|
margin-bottom: 0;
|
|
`;
|