protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { Stopwatch watch = new Stopwatch(); watch.Start(); HttpMessage message = new HttpMessage(request); string requestData = request.Content.ReadAsStringAsync().Result; StringBuilder requestContent = new StringBuilder(); #region log try { if (Log.IsInfoEnabled) { string api = message.GetRequestUriTemplate(); requestContent.Append("\r\n\tRequest ClientIP : ").Append(message.GetClientIP()).Append("\r\n"); requestContent.Append("\tRequest URL : ").Append(message.GetHttpMethod()).Append(" ").Append(message.GetRequestUri()).Append("\r\n"); requestContent.Append("\tRequest Hearder : "); requestContent.Append(message.GetHttpHeader()); if (!String.IsNullOrEmpty(requestData)) { requestContent.Append("\r\n\tRequest Body : ").Append(requestData); } } } catch (Exception exception) { Log.Error(exception.ToString()); } #endregion SetContext(request); // Token validation if (Context.RequestUriTemplate == "apis/v1/token") { return base.SendAsync(request, cancellationToken); } if (String.IsNullOrEmpty(Context.Token)) { return HttpResponseHelper.SendAsync(UnAuthenticationResponse()); } else { TokenRepository tr = new TokenRepository(); var tokenModel = tr.GetTokenModel(Context.Token); if (tokenModel == null) { return HttpResponseHelper.SendAsync(UnAuthenticationResponse()); } else { Context.LoginName = tokenModel.UserName; var response = base.SendAsync(request, cancellationToken); #region Response Log if (Log.IsInfoEnabled) { try { Task<string> responseMessage = null; if (response.Result != null && response.Result.Content != null) { responseMessage = response.Result.Content.ReadAsStringAsync(); } watch.Stop(); int requestExcuteTime = Convert.ToInt32(watch.ElapsedMilliseconds); watch = null; requestContent.Append("\r\n\tResponse : "); if (responseMessage != null) { requestContent.Append(responseMessage.Result); } requestContent.Append("\r\n\tCost(ms) : ").Append(requestExcuteTime); Log.Info(requestContent.ToString()); } catch (Exception exception) { Log.Error(exception.ToString()); } } #endregion return response; } } }
private void SetContext(HttpRequestMessage request) { // Get neccessary data from http request message HttpMessage message = new HttpMessage(request); Context.ClientIP = message.GetClientIP(); //Context.IsAuthed = false; Context.Token = message.GetToken(); Context.RequestUri = message.GetRequestUri(); Context.RequestUriTemplate = message.GetRequestUriTemplate(); Context.HttpMethod = message.GetHttpMethod(); Context.HttpHeader = message.GetHttpHeader(); Context.ContentType = message.GetContentType(); Context.ContentLength = message.GetContentLength(); }