public override void OnEntry(MethodExecutionArgs args) { IPassport thisPassport = null; if (_passportParameterIndex >= 0) { thisPassport = (IPassport)args.Arguments[_passportParameterIndex]; } if (thisPassport == null) { return; } var scopeName = args.ScopeName(); thisPassport.PushScope(scopeName); IDictionary <string, object> parameters = new Dictionary <string, object>(); for (var i = 0; i < args.Arguments.Count; i++) { if (!_passportParameters.Contains(_parameterNames[i])) { parameters[_parameterNames[i]] = args.Arguments[i] ?? "null"; } } thisPassport.Scope.RecordParameters(() => parameters, Constants.PassportScope.Enter); thisPassport.Debug("Has been entered", includeContext: true, includeScopes: true, scopeDepth: 0); }
public static async Task <T> ScopeAsync <T>(this IPassport self, Func <Task <T> > actionAsync) where T : StandardResponse { Stopwatch sw = null; try { sw = Stopwatch.StartNew(); return(await actionAsync()); } catch (Exception e) { if (sw != null) { sw.Stop(); } if (!PassportSettings.Settings.ExcludedExceptions.Any(x => x.Equals(e.GetType().FullName, StringComparison.InvariantCultureIgnoreCase))) { if (sw != null) { sw.Stop(); var ElapsedMilliseconds = sw.ElapsedMilliseconds; self.Scope.Record(() => ElapsedMilliseconds, Constants.Passports.KeyOnExit); sw = null; } self.Exception(e); } var standardError = new StandardError(); standardError.Errors.Add(Constants.Passports.KeyError); var instance = Activator.CreateInstance <T>(); instance.StandardError = standardError; return(instance); } finally { if (self != null) { if (sw != null) { sw.Stop(); var ElapsedMilliseconds = sw.ElapsedMilliseconds; self.Scope.Record(() => ElapsedMilliseconds, Constants.Passports.KeyOnExit); } self.Debug(Constants.Passports.KeyEndOfRequest, includeContext: true, includeScopes: true); //self.PopScope(); } } }