@@ -8,19 +8,27 @@ namespace Exceptionless.WebApi {
8
8
public class ExceptionlessHandleErrorAttribute : IExceptionFilter {
9
9
private readonly ExceptionlessClient _client ;
10
10
11
- public bool HasWrappedFilter { get { return WrappedFilter != null ; } }
11
+ protected bool HasWrappedFilter { get { return WrappedFilter != null ; } }
12
12
13
- public IExceptionFilter WrappedFilter { get ; set ; }
13
+ protected internal IExceptionFilter WrappedFilter { get ; set ; }
14
14
15
15
public bool AllowMultiple { get { return HasWrappedFilter && WrappedFilter . AllowMultiple ; } }
16
16
17
17
public ExceptionlessHandleErrorAttribute ( ExceptionlessClient client = null ) {
18
18
_client = client ?? ExceptionlessClient . Default ;
19
19
}
20
20
21
- public virtual void OnHttpException ( HttpActionExecutedContext actionExecutedContext , CancellationToken cancellationToken ) {
21
+ public Task ExecuteExceptionFilterAsync ( HttpActionExecutedContext actionExecutedContext , CancellationToken cancellationToken ) {
22
+ _client . Configuration . Resolver . GetLog ( ) . Trace ( "ExecuteExceptionFilterAsync executing..." ) ;
23
+ if ( actionExecutedContext == null )
24
+ throw new ArgumentNullException ( nameof ( actionExecutedContext ) ) ;
25
+
26
+ return OnHttpExceptionAsync ( actionExecutedContext , cancellationToken ) ;
27
+ }
28
+
29
+ protected virtual async Task OnHttpExceptionAsync ( HttpActionExecutedContext actionExecutedContext , CancellationToken cancellationToken ) {
22
30
if ( HasWrappedFilter )
23
- WrappedFilter . ExecuteExceptionFilterAsync ( actionExecutedContext , cancellationToken ) ;
31
+ await WrappedFilter . ExecuteExceptionFilterAsync ( actionExecutedContext , cancellationToken ) . ConfigureAwait ( false ) ;
24
32
25
33
var contextData = new ContextData ( ) ;
26
34
contextData . MarkAsUnhandledError ( ) ;
@@ -32,13 +40,5 @@ public virtual void OnHttpException(HttpActionExecutedContext actionExecutedCont
32
40
. Submit ( ) ;
33
41
}
34
42
35
- public Task ExecuteExceptionFilterAsync ( HttpActionExecutedContext actionExecutedContext , CancellationToken cancellationToken ) {
36
- _client . Configuration . Resolver . GetLog ( ) . Trace ( "ExecuteExceptionFilterAsync executing..." ) ;
37
- if ( actionExecutedContext == null )
38
- throw new ArgumentNullException ( "actionExecutedContext" ) ;
39
-
40
- OnHttpException ( actionExecutedContext , cancellationToken ) ;
41
- return Task . FromResult ( 0 ) ;
42
- }
43
43
}
44
44
}
0 commit comments