// GET api/employees
        //public IEnumerable<Employee> Get()
        //{
        //    return list;
        //}

        public IEnumerable <Employee> Get()
        {
            IEnumerable <Employee> employees = null;

            if (traceWriter != null)
            {
                traceWriter.TraceBeginEnd(
                    Request,
                    TraceCategories.FormattingCategory,
                    System.Web.Http.Tracing.TraceLevel.Info,
                    "EmployeesController",
                    "Get",
                    beginTrace: (tr) =>
                {
                    tr.Message = "Entering Get";
                },
                    execute: () =>
                {
                    System.Threading.Thread.Sleep(1000);     // Simulate delay
                    employees = list;
                },
                    endTrace: (tr) =>
                {
                    tr.Message = "Leaving Get";
                },
                    errorTrace: null);
            }

            return(employees);
        }
        public CorsResult EvaluatePolicy(CorsRequestContext requestContext, CorsPolicy policy)
        {
            CorsResult corsResult = null;

            _traceWriter.TraceBeginEnd(
                null,
                TraceCategories.CorsCategory,
                TraceLevel.Info,
                _innerCorsEngine.GetType().Name,
                MethodName,
                beginTrace: null,
                execute: () => { corsResult = _innerCorsEngine.EvaluatePolicy(requestContext, policy); },
                endTrace: (tr) =>
            {
                if (corsResult != null)
                {
                    tr.Message = String.Format(CultureInfo.CurrentCulture, SRResources.TraceEndCorsResultReturned, corsResult);
                }
                else
                {
                    tr.Message = SRResources.TraceEndNoCorsResultReturned;
                }
            },
                errorTrace: null);

            return(corsResult);
        }
Beispiel #3
0
        HttpControllerDescriptor IHttpControllerSelector.SelectController(HttpRequestMessage request)
        {
            HttpControllerDescriptor controllerDescriptor = null;

            _traceWriter.TraceBeginEnd(
                request,
                TraceCategories.ControllersCategory,
                TraceLevel.Info,
                _innerSelector.GetType().Name,
                SelectControllerMethodName,
                beginTrace: (tr) =>
            {
                tr.Message = Error.Format(
                    SRResources.TraceRouteMessage,
                    FormattingUtilities.RouteToString(request.GetRouteData()));
            },
                execute: () =>
            {
                controllerDescriptor = _innerSelector.SelectController(request);
            },
                endTrace: (tr) =>
            {
                tr.Message = controllerDescriptor == null
                                        ? SRResources.TraceNoneObjectMessage
                                        : controllerDescriptor.ControllerName;
            },
                errorTrace: null);

            if (controllerDescriptor != null && !(controllerDescriptor is HttpControllerDescriptorTracer))
            {
                return(new HttpControllerDescriptorTracer(controllerDescriptor.Configuration, controllerDescriptor.ControllerName, controllerDescriptor.ControllerType, controllerDescriptor, _traceWriter));
            }

            return(controllerDescriptor);
        }
        public ICorsPolicyProvider GetCorsPolicyProvider(HttpRequestMessage request)
        {
            ICorsPolicyProvider policyProvider = null;

            _traceWriter.TraceBeginEnd(
                request,
                TraceCategories.CorsCategory,
                TraceLevel.Info,
                _innerPolicyProviderFactory.GetType().Name,
                MethodName,
                beginTrace: (tr) =>
            {
                tr.Message = String.Format(CultureInfo.CurrentCulture, SRResources.TraceCorsRequestContext, request.GetCorsRequestContext());
            },
                execute: () => { policyProvider = _innerPolicyProviderFactory.GetCorsPolicyProvider(request); },
                endTrace: (tr) =>
            {
                if (policyProvider != null)
                {
                    tr.Message = String.Format(CultureInfo.CurrentCulture, SRResources.TraceEndPolicyProviderReturned, policyProvider);
                }
                else
                {
                    tr.Message = SRResources.TraceEndNoPolicyProviderReturned;
                }
            },
                errorTrace: null);

            if (policyProvider != null)
            {
                return(new CorsPolicyProviderTracer(policyProvider, _traceWriter));
            }

            return(null);
        }
        HttpActionDescriptor IHttpActionSelector.SelectAction(HttpControllerContext controllerContext)
        {
            HttpActionDescriptor actionDescriptor = null;

            _traceWriter.TraceBeginEnd(
                controllerContext.Request,
                TraceCategories.ActionCategory,
                TraceLevel.Info,
                _innerSelector.GetType().Name,
                SelectActionMethodName,
                beginTrace: null,
                execute: () => { actionDescriptor = _innerSelector.SelectAction(controllerContext); },
                endTrace: (tr) =>
            {
                tr.Message = Error.Format(
                    SRResources.TraceActionSelectedMessage,
                    FormattingUtilities.ActionDescriptorToString(actionDescriptor));
            },

                errorTrace: null);

            // Intercept returned HttpActionDescriptor with a tracing version
            if (actionDescriptor != null && !(actionDescriptor is HttpActionDescriptorTracer))
            {
                return(new HttpActionDescriptorTracer(controllerContext, actionDescriptor, _traceWriter));
            }

            return(actionDescriptor);
        }
        public override IHttpController CreateController(HttpRequestMessage request)
        {
            IHttpController controller = null;

            _traceWriter.TraceBeginEnd(
                request,
                TraceCategories.ControllersCategory,
                TraceLevel.Info,
                _innerDescriptor.GetType().Name,
                CreateControllerMethodName,
                beginTrace: null,
                execute: () =>
            {
                controller = _innerDescriptor.CreateController(request);
            },
                endTrace: (tr) =>
            {
                tr.Message = controller == null
                                        ? SRResources.TraceNoneObjectMessage
                                        : HttpControllerTracer.ActualControllerType(controller).FullName;
            },
                errorTrace: null);

            if (controller != null && !(controller is HttpControllerTracer))
            {
                return(new HttpControllerTracer(request, controller, _traceWriter));
            }

            return(controller);
        }
 public override void OnAuthorization(HttpActionContext actionContext)
 {
     _traceStore.TraceBeginEnd(
         actionContext.ControllerContext.Request,
         TraceCategories.FiltersCategory,
         TraceLevel.Info,
         _innerFilter.GetType().Name,
         OnAuthorizationMethodName,
         beginTrace: (tr) =>
     {
         HttpResponseMessage response = actionContext.Response;
         if (response != null)
         {
             tr.Status = response.StatusCode;
         }
     },
         execute: () => { _innerFilter.OnAuthorization(actionContext); },
         endTrace: (tr) =>
     {
         HttpResponseMessage response = actionContext.Response;
         if (response != null)
         {
             tr.Status = response.StatusCode;
         }
     },
         errorTrace: (tr) =>
     {
         HttpResponseMessage response = actionContext.Response;
         if (response != null)
         {
             tr.Status = response.StatusCode;
         }
     });
 }
Beispiel #8
0
        IHttpController IHttpControllerActivator.Create(HttpControllerContext controllerContext, Type controllerType)
        {
            IHttpController controller = null;

            _traceWriter.TraceBeginEnd(
                controllerContext.Request,
                TraceCategories.ControllersCategory,
                TraceLevel.Info,
                _innerActivator.GetType().Name,
                CreateMethodName,
                beginTrace: null,
                execute: () =>
            {
                controller = _innerActivator.Create(controllerContext, controllerType);
            },
                endTrace: (tr) =>
            {
                tr.Message = controller == null ? SRResources.TraceNoneObjectMessage : controller.GetType().FullName;
            },
                errorTrace: null);

            if (controller != null && !(controller is HttpControllerTracer))
            {
                controller = new HttpControllerTracer(controller, _traceWriter);
            }

            return(controller);
        }
Beispiel #9
0
 public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
 {
     _traceWriter.TraceBeginEnd(
         actionExecutedContext.Request,
         TraceCategories.FiltersCategory,
         TraceLevel.Info,
         _innerFilter.GetType().Name,
         ActionExecutedMethodName,
         beginTrace: (tr) =>
     {
         tr.Message = Error.Format(
             SRResources.TraceActionFilterMessage,
             FormattingUtilities.ActionDescriptorToString(
                 actionExecutedContext.ActionContext.ActionDescriptor));
         tr.Exception = actionExecutedContext.Exception;
         HttpResponseMessage response = actionExecutedContext.Response;
         if (response != null)
         {
             tr.Status = response.StatusCode;
         }
     },
         execute: () =>
     {
         _innerFilter.OnActionExecuted(actionExecutedContext);
     },
         endTrace: (tr) =>
     {
         tr.Exception = actionExecutedContext.Exception;
         HttpResponseMessage response = actionExecutedContext.Response;
         if (response != null)
         {
             tr.Status = response.StatusCode;
         }
     },
         errorTrace: (tr) =>
     {
         HttpResponseMessage response = actionExecutedContext.Response;
         if (response != null)
         {
             tr.Status = response.StatusCode;
         }
     });
 }
Beispiel #10
0
        public ContentNegotiationResult Negotiate(
            Type type,
            HttpRequestMessage request,
            IEnumerable <MediaTypeFormatter> formatters
            )
        {
            ContentNegotiationResult result = null;

            _traceWriter.TraceBeginEnd(
                request,
                TraceCategories.FormattingCategory,
                TraceLevel.Info,
                _innerNegotiator.GetType().Name,
                NegotiateMethodName,
                beginTrace: (tr) =>
            {
                tr.Message = Error.Format(
                    SRResources.TraceNegotiateFormatter,
                    type.Name,
                    FormattingUtilities.FormattersToString(formatters)
                    );
            },
                execute: () =>
            {
                result = _innerNegotiator.Negotiate(type, request, formatters);
            },
                endTrace: (tr) =>
            {
                tr.Message = Error.Format(
                    SRResources.TraceSelectedFormatter,
                    result == null
                          ? SRResources.TraceNoneObjectMessage
                          : MediaTypeFormatterTracer
                    .ActualMediaTypeFormatter(result.Formatter)
                    .GetType().Name,
                    result == null || result.MediaType == null
                          ? SRResources.TraceNoneObjectMessage
                          : result.MediaType.ToString()
                    );
            },
                errorTrace: null
                );

            if (result != null)
            {
                result.Formatter = MediaTypeFormatterTracer.CreateTracer(
                    result.Formatter,
                    _traceWriter,
                    request
                    );
            }

            return(result);
        }
        IHttpController IHttpControllerFactory.CreateController(HttpControllerContext controllerContext, string controllerName)
        {
            IHttpController controller = null;

            _traceWriter.TraceBeginEnd(
                controllerContext.Request,
                TraceCategories.ControllersCategory,
                TraceLevel.Info,
                _innerFactory.GetType().Name,
                CreateControllerMethodName,
                beginTrace: (tr) =>
            {
                tr.Message = Error.Format(
                    SRResources.TraceControllerNameAndRouteMessage,
                    controllerName,
                    FormattingUtilities.RouteToString(controllerContext.RouteData));
            },
                execute: () =>
            {
                controller = _innerFactory.CreateController(controllerContext, controllerName);
            },
                endTrace: (tr) =>
            {
                tr.Message = controller == null
                                        ? SRResources.TraceNoneObjectMessage
                                        : HttpControllerTracer.ActualControllerType(controller).FullName;
            },
                errorTrace: null);

            if (controller != null && !(controller is HttpControllerTracer))
            {
                controller = new HttpControllerTracer(controller, _traceWriter);
            }

            return(controller);
        }
Beispiel #12
0
        // Trace beginning and end of GetControllerTypes() invocations. Error tracing should never occur since base
        // implementation swallows all exceptions.
        public override ICollection <Type> GetControllerTypes(IAssembliesResolver assembliesResolver)
        {
            ICollection <Type> result = null;

            _traceWriter.TraceBeginEnd(request: null,
                                       category: TraceCategories.ControllersCategory,
                                       level: TraceLevel.Debug,
                                       operatorName: _innerTypeName,
                                       operationName: "GetControllerTypes",
                                       beginTrace: null,
                                       execute: () => { result = _innerResolver.GetControllerTypes(assembliesResolver); },
                                       endTrace: null,
                                       errorTrace: null);

            return(result);
        }
Beispiel #13
0
        void IDisposable.Dispose()
        {
            IDisposable disposable = _innerController as IDisposable;

            if (disposable != null)
            {
                _traceWriter.TraceBeginEnd(
                    _request,
                    TraceCategories.ControllersCategory,
                    TraceLevel.Info,
                    _innerController.GetType().Name,
                    DisposeMethodName,
                    beginTrace: null,
                    execute: disposable.Dispose,
                    endTrace: null,
                    errorTrace: null);
            }
        }
Beispiel #14
0
        // GET api/employees/12345
        public Employee Get(int id)
        {
            Employee employee = null;

            if (traceWriter != null)
            {
                traceWriter.TraceBeginEnd(
                    Request,
                    TraceCategories.FormattingCategory,
                    TraceLevel.Info,
                    "EmployeesController",
                    "Get",
                    beginTrace: (tr) =>
                {
                    tr.Message = "Entering Get";
                },
                    execute: () =>
                {
                    System.Threading.Thread.Sleep(1000);     //Simulate delay
                    employee = list.First(e => e.Id == id);
                },
                    endTrace: (tr) =>
                {
                    tr.Message = "Leaving Get";
                },
                    errorTrace: null);

                /*
                 * traceWriter.Info(Request, "EmployeesController", String.Format($"Getting employee {id}"));
                 * traceWriter.Trace(Request,
                 *  "System.Web.Http.Conrollers", System.Web.Http.Tracing.TraceLevel.Info,
                 *  (traceRecord) =>
                 *  {
                 *      traceRecord.Message = String.Format($"Getting employee {id}");
                 *      traceRecord.Operation = "Get(int)";
                 *      traceRecord.Operator = "EmployeeController";
                 *  });
                 */
            }


            return(employee);
        }
 public override void OnException(HttpActionExecutedContext actionExecutedContext)
 {
     _traceStore.TraceBeginEnd(
         actionExecutedContext.Request,
         TraceCategories.FiltersCategory,
         TraceLevel.Info,
         _innerFilter.GetType().Name,
         OnExceptionMethodName,
         beginTrace: (tr) =>
     {
         HttpResponseMessage response = actionExecutedContext.Response;
         if (response != null)
         {
             tr.Status = response.StatusCode;
         }
     },
         execute: () =>
     {
         _innerFilter.OnException(actionExecutedContext);
     },
         endTrace: (tr) =>
     {
         Exception returnedException = actionExecutedContext.Exception;
         tr.Level     = returnedException == null ? TraceLevel.Info : TraceLevel.Error;
         tr.Exception = returnedException;
         HttpResponseMessage response = actionExecutedContext.Response;
         if (response != null)
         {
             tr.Status = response.StatusCode;
         }
     },
         errorTrace: (tr) =>
     {
         HttpResponseMessage response = actionExecutedContext.Response;
         if (response != null)
         {
             tr.Status = response.StatusCode;
         }
     });
 }