1
+ using System ;
2
+ using Exceptionless . Plugins ;
3
+ using Microsoft . AspNetCore . Http ;
4
+ using Microsoft . Extensions . DiagnosticAdapter ;
5
+
6
+ namespace Exceptionless . AspNetCore {
7
+ internal sealed class ExceptionlessDiagnosticListener {
8
+ private readonly ExceptionlessClient _client ;
9
+ public ExceptionlessDiagnosticListener ( ExceptionlessClient client ) {
10
+ _client = client ;
11
+ }
12
+
13
+ [ DiagnosticName ( "Microsoft.AspNetCore.Diagnostics.HandledException" ) ]
14
+ public void OnDiagnosticHandledException ( HttpContext context , Exception ex ) {
15
+ var contextData = new ContextData ( ) ;
16
+ contextData . SetSubmissionMethod ( "Microsoft.AspNetCore.Diagnostics.UnhandledException" ) ;
17
+ contextData . Add ( nameof ( HttpContext ) , context ) ;
18
+
19
+ ex . ToExceptionless ( contextData , _client ) . Submit ( ) ;
20
+ }
21
+
22
+ [ DiagnosticName ( "Microsoft.AspNetCore.Diagnostics.UnhandledException" ) ]
23
+ public void OnDiagnosticUnhandledException ( HttpContext context , Exception ex ) {
24
+ var contextData = new ContextData ( ) ;
25
+ contextData . MarkAsUnhandledError ( ) ;
26
+ contextData . SetSubmissionMethod ( "Microsoft.AspNetCore.Diagnostics.HandledException" ) ;
27
+ contextData . Add ( nameof ( HttpContext ) , context ) ;
28
+
29
+ ex . ToExceptionless ( contextData , _client ) . Submit ( ) ;
30
+ }
31
+
32
+ [ DiagnosticName ( "Microsoft.AspNetCore.Hosting.UnhandledException" ) ]
33
+ public void OnHostingUnhandledException ( HttpContext context , Exception ex ) {
34
+ var contextData = new ContextData ( ) ;
35
+ contextData . MarkAsUnhandledError ( ) ;
36
+ contextData . SetSubmissionMethod ( "Microsoft.AspNetCore.Hosting.UnhandledException" ) ;
37
+ contextData . Add ( nameof ( HttpContext ) , context ) ;
38
+
39
+ ex . ToExceptionless ( contextData , _client ) . Submit ( ) ;
40
+ }
41
+
42
+ [ DiagnosticName ( "Microsoft.AspNetCore.MiddlewareAnalysis.MiddlewareException" ) ]
43
+ public void OnMiddlewareException ( Exception ex , string name ) {
44
+ var contextData = new ContextData ( ) ;
45
+ contextData . MarkAsUnhandledError ( ) ;
46
+ contextData . SetSubmissionMethod ( name ) ;
47
+
48
+ ex . ToExceptionless ( contextData , _client ) . Submit ( ) ;
49
+ }
50
+ }
51
+ }
0 commit comments