//private static WebClient webClient; static APILoggerFilterAttribute() { var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip }; Client = new HttpClient(handler); Client.Timeout = TimeSpan.FromMilliseconds(100); Client.DefaultRequestHeaders.Add("Connection", "keep-alive"); mylog = new Log(); Models = new RequestReponseModels(); }
//private static void HttpRequestAsync(RequestReponseModels models) //{ // using (var socket = new TcpClient("10.30.3.149", 8099)) // { // var headerContent = new StringBuilder(); // headerContent.AppendLine("POST /api/Log/LogConnectErrorAsync HTTP/1.0"); // headerContent.AppendLine("Accept: */*"); // headerContent.AppendLine("Host: " + "10.30.3.149"); // headerContent.AppendLine("Content-Type: application/javascript; charset=utf8"); // headerContent.AppendLine("Content-Length: " + JsonConvert.SerializeObject(models).Length); // headerContent.AppendLine("Connection: Close"); // headerContent.AppendLine(); // var header = Encoding.UTF8.GetBytes(headerContent.ToString()); // var body = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(models).ToString()); // using (var stream = socket.GetStream()) // { // stream.Write(header, 0, header.Length); // stream.Write(body, 0, body.Length); // } // } //} //非同步 //private void Start(RequestReponseModels models) //{ // //建立一個執行緒,並且傳入一個委派物件 ParameterizedThreadStart,' // //並且設定指向 PrintOddNumber 方法。 // Thread oThreadA = new Thread(new ParameterizedThreadStart(postLog)); // //設定執行緒的 Name // oThreadA.Name = "HangfireLog"; // oThreadA.IsBackground = true; // //啟動執行緒物件,並且傳入參數 // oThreadA.Start(models); //} //private async void postLog(object value) //{ // var url = System.Configuration.ConfigurationManager.AppSettings["LogAddressUrl"]; // var client = new HttpClient() // { // BaseAddress = new Uri(url + "api/Log/LogConnectErrorAsync"), // Timeout = TimeSpan.FromMilliseconds(100) // }; // client.DefaultRequestHeaders.Add("Connection", "keep-alive"); // client.DefaultRequestHeaders.Add("Keep-Alive", "600"); // try // { // await client.PostAsync(url + "api/Log/LogConnectErrorAsync", new StringContent(JsonConvert.SerializeObject(value).ToString(), Encoding.UTF8, "application/json")).ConfigureAwait(false); // } // catch (Exception e) // { // mylog.HangfireErrorLog(e.Message, HttpContext.Current.Server.MapPath("~/Log/Temp")); // } // finally // { // client.Dispose(); // } //} //Task 非同步 private static async Task postLog(RequestReponseModels models) { var url = System.Configuration.ConfigurationManager.AppSettings["LogAddressUrl"]; try { await Client.PostAsync(url + "api/Log/LogConnectErrorAsync", new StringContent(JsonConvert.SerializeObject(models).ToString(), Encoding.UTF8, "application/json")).ConfigureAwait(false); } catch (Exception e) { mylog.HangfireErrorLog(e.Message, HttpContext.Current.Server.MapPath("~/Log/Temp")); } }
private static void postLogWebClient(RequestReponseModels models) { var url = System.Configuration.ConfigurationManager.AppSettings["LogAddressUrl"]; try { using (WebClient webClient = new WebClient()) { webClient.Encoding = Encoding.UTF8; //webClient.Headers[HttpRequestHeader.AcceptEncoding] = "gzip"; webClient.Headers.Add(HttpRequestHeader.ContentType, "application/json"); string json = JsonConvert.SerializeObject(models); webClient.UploadString(url + "api/Log/LogConnectErrorAsync", json); } } catch (Exception e) { mylog.HangfireErrorLog(e.Message, HttpContext.Current.Server.MapPath("~/Log/Temp")); } }
private static void postLoghttpWebRequest(RequestReponseModels models) { var url = System.Configuration.ConfigurationManager.AppSettings["LogAddressUrl"]; string postData = JsonConvert.SerializeObject(models); byte[] bytes = Encoding.UTF8.GetBytes(postData); var httpWebRequest = (HttpWebRequest)WebRequest.Create(url + "api/Log/LogConnectErrorAsync"); httpWebRequest.Method = "POST"; httpWebRequest.ContentLength = bytes.Length; httpWebRequest.ContentType = "application/json"; using (Stream requestStream = httpWebRequest.GetRequestStream()) { requestStream.Write(bytes, 0, bytes.Count()); } var httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); if (httpWebResponse.StatusCode != HttpStatusCode.OK) { string message = String.Format("POST failed. Received HTTP {0}", httpWebResponse.StatusCode); throw new ApplicationException(message); } }
private async Task NormalAsync(HttpContext context, Exception exception = null) { if (exception == null) { _requestreponseModels = new RequestReponseModels() { connectModel = new HandlingLogContext(context).GetData(), errModel = null }; if (System.Text.ASCIIEncoding.ASCII.GetByteCount(JsonConvert.SerializeObject(_requestreponseModels.connectModel)) > SettingHelper.Over_ReponseSize) { mylog.SizeErrorLog(JsonConvert.SerializeObject(_requestreponseModels.connectModel), $"{Directory.GetCurrentDirectory()}"); } else { var client = new HttpClient() { BaseAddress = new Uri(ToolsContext.config.GetSection(SettingHelper.LogDomain).Value + "api/Log/LogConnectErrorAsync"), Timeout = TimeSpan.FromMilliseconds(300) }; try { var response = await client.PostAsync(ToolsContext.config.GetSection(SettingHelper.LogDomain).Value + "api/Log/LogConnectErrorAsync", new StringContent(JsonConvert.SerializeObject(_requestreponseModels).ToString(), Encoding.UTF8, "application/json")); } catch (Exception e) { mylog.HangfireErrorLog(e.Message, $"{Directory.GetCurrentDirectory()}"); } finally { client.Dispose(); } } } else { _requestreponseModels = new RequestReponseModels() { connectModel = new HandlingLogContext(context).GetData(), errModel = new ErrLogContext(context, exception).GetErrData() }; if (System.Text.ASCIIEncoding.ASCII.GetByteCount(JsonConvert.SerializeObject(_requestreponseModels.connectModel)) > SettingHelper.Over_ReponseSize || System.Text.ASCIIEncoding.ASCII.GetByteCount(JsonConvert.SerializeObject(_requestreponseModels.errModel)) > SettingHelper.Over_ReponseSize) { mylog.SizeErrorLog(JsonConvert.SerializeObject(_requestreponseModels.connectModel), $"{Directory.GetCurrentDirectory()}"); mylog.SizeErrorLog(JsonConvert.SerializeObject(_requestreponseModels.errModel), $"{Directory.GetCurrentDirectory()}"); } else { var client = new HttpClient() { BaseAddress = new Uri(ToolsContext.config.GetSection(SettingHelper.LogDomain).Value + "api/Log/LogConnectErrorAsync"), Timeout = TimeSpan.FromMilliseconds(300) }; try { var response = await client.PostAsync(ToolsContext.config.GetSection(SettingHelper.LogDomain).Value + "api/Log/LogConnectErrorAsync", new StringContent(JsonConvert.SerializeObject(_requestreponseModels).ToString(), Encoding.UTF8, "application/json")); } catch (Exception e) { mylog.HangfireErrorLog(e.Message, $"{Directory.GetCurrentDirectory()}"); } finally { client.Dispose(); } } } }