Пример #1
0
        //Antes da Action
        public void OnActionExecuted(ActionExecutedContext context)

        {
            ObjectResult obj    = context.Result as ObjectResult;
            var          status = obj.StatusCode;


            HttpStatusCode code    = (HttpStatusCode)status;
            var            message = new HttpResponseMessage(code);

            short result = 0;

            if (message.IsSuccessStatusCode)
            {
                result = 1;
            }

            long timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

            var tipo = (string)context.RouteData.Values["Controller"];

            var log = new API_Log
            {
                DATA_REFERENCIA = timestamp,
                MENSAGEM        = message.ReasonPhrase,
                TIPO            = tipo,
                DETALHE         = (int)status,
                RESULTADO       = result
            };

            _uof.API_LogRepository.Add(log);
            _uof.Commit();
        }
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request,
                                                                      CancellationToken cancellationToken)
        {
            var requestedMethod = request.Method;
            var userHostAddress = HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : "0.0.0.0";
            var useragent       = request.Headers.UserAgent.ToString();
            var requestMessage  = await request.Content.ReadAsByteArrayAsync();

            var uriAccessed = request.RequestUri.AbsoluteUri;

            var responseHeadersString = new StringBuilder();

            foreach (var header in request.Headers)
            {
                responseHeadersString.Append($"{header.Key}: {String.Join(", ", header.Value)}{Environment.NewLine}");
            }

            var messageLoggingHandler = new MessageLogging();

            var requestLog = new API_Log()
            {
                Headers         = responseHeadersString.ToString(),
                AbsoluteUri     = uriAccessed,
                Host            = userHostAddress,
                RequestBody     = Encoding.UTF8.GetString(requestMessage),
                UserHostAddress = userHostAddress,
                Useragent       = useragent,
                RequestedMethod = requestedMethod.ToString(),
                StatusCode      = string.Empty
            };

            messageLoggingHandler.IncomingMessageAsync(requestLog);

            var response = await base.SendAsync(request, cancellationToken);

            byte[] responseMessage;
            if (response.IsSuccessStatusCode)
            {
                responseMessage = await response.Content.ReadAsByteArrayAsync();
            }
            else
            {
                responseMessage = Encoding.UTF8.GetBytes(response.ReasonPhrase);
            }

            var responseLog = new API_Log()
            {
                Headers         = responseHeadersString.ToString(),
                AbsoluteUri     = uriAccessed,
                Host            = userHostAddress,
                RequestBody     = Encoding.UTF8.GetString(responseMessage),
                UserHostAddress = userHostAddress,
                Useragent       = useragent,
                RequestedMethod = requestedMethod.ToString(),
                StatusCode      = string.Empty
            };

            messageLoggingHandler.OutgoingMessageAsync(responseLog);
            return(response);
        }
Пример #3
0
        public void OutgoingMessageAsync(API_Log apiLog)
        {
            apiLog.RequestType = "Response";
            var sqlErrorLogging = new ApiLogging();

            sqlErrorLogging.InsertLog(apiLog);
        }
Пример #4
0
 public void InsertLog(API_Log apiLog)
 {
     try
     {
         using (var sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["MainConnection"].ConnectionString))
         {
             sqlConnection.Open();
             var cmd =
                 new SqlCommand("API_Logging", connection: sqlConnection)
             {
                 CommandType = CommandType.StoredProcedure
             };
             cmd.Parameters.AddWithValue("@Host", apiLog.Host);
             cmd.Parameters.AddWithValue("@Headers", apiLog.Headers);
             cmd.Parameters.AddWithValue("@StatusCode", apiLog.StatusCode);
             cmd.Parameters.AddWithValue("@RequestBody", apiLog.RequestBody);
             cmd.Parameters.AddWithValue("@RequestedMethod", apiLog.RequestedMethod);
             cmd.Parameters.AddWithValue("@UserHostAddress", apiLog.UserHostAddress);
             cmd.Parameters.AddWithValue("@Useragent", apiLog.Useragent);
             cmd.Parameters.AddWithValue("@AbsoluteUri", apiLog.AbsoluteUri);
             cmd.Parameters.AddWithValue("@RequestType", apiLog.RequestType);
             cmd.ExecuteNonQuery();
         }
     }
     catch (Exception)
     {
         throw;
     }
 }