private RequestDetail GetRequestDetail(HttpContext context, RequestInfo request) { RequestDetail model = ModelCreator.CreateRequestDetail(); if (context.Request != null) { model.Id = context.GetUniqueId(); model.RequestId = request.Id; Dictionary <string, string> cookies = context.Request.Cookies.ToList().ToDictionary(x => x.Key, x => x.Value); if (cookies != null && cookies.Count > 0) { model.Cookie = JsonConvert.SerializeObject(cookies); } Dictionary <string, string> headers = context.Request.Headers.ToList().ToDictionary(x => x.Key, x => x.Value.ToString()); if (headers != null && headers.Count > 0) { model.Header = HttpUtility.HtmlDecode(JsonConvert.SerializeObject(headers)); } if (context.Items.ContainsKey(BasicConfig.HttpReportsGlobalException)) { Exception ex = context.Items[BasicConfig.HttpReportsGlobalException] as Exception; if (ex != null) { model.ErrorMessage = ex.Message; model.ErrorStack = HttpUtility.HtmlDecode(ex.StackTrace); } context.Items.Remove(BasicConfig.HttpReportsGlobalException); } if (context.Items.ContainsKey(BasicConfig.HttpReportsRequestBody)) { string requestBody = context.Items[BasicConfig.HttpReportsRequestBody] as string; if (requestBody != null) { model.RequestBody = requestBody; } context.Items.Remove(BasicConfig.HttpReportsRequestBody); } if (context.Items.ContainsKey(BasicConfig.HttpReportsResponseBody)) { string responseBody = context.Items[BasicConfig.HttpReportsResponseBody] as string; if (responseBody != null) { model.ResponseBody = responseBody; } context.Items.Remove(BasicConfig.HttpReportsResponseBody); } model.CreateTime = context.Items[BasicConfig.ActiveTraceCreateTime].ToDateTime(); model.Scheme = context.Request.Scheme; model.QueryString = HttpUtility.UrlDecode(context.Request.QueryString.Value); } return(model); }