public void Save(GoCanvasLoggingDbContext dbContext) { if (HasXMLBody) { var record = new ResponseLog() { ResponseBody = $"{this.ToString()}" }; try { MemoryStream ms = new MemoryStream(); this.Request.Body.Seek(0, SeekOrigin.Begin); this.Request.Body.CopyTo(ms); ms.Seek(0, SeekOrigin.Begin); var xmlSerializer = new XmlSerializer(typeof(SubmissionNotification)); SubmissionNotification submission_notification = (SubmissionNotification)xmlSerializer.Deserialize(ms); } catch (Exception e) { record.ResponseType = 1; } try { dbContext.ResponseLogs.Add(record); dbContext.SaveChanges(); } catch (Exception e) { using (dbContext.Database.BeginTransaction(IsolationLevel.Unspecified)) { dbContext.Database.ExecuteSqlRaw($"INSERT INTO [tblResponseLog]([ResponseBody])VALUES('ResponseBody Logger FAILED::{e}|{this.ToString()}');"); } try { using (dbContext.Database.BeginTransaction(IsolationLevel.Unspecified)) { dbContext.Database.ExecuteSqlRaw($"INSERT INTO [tblResponseLog]([ResponseBody])VALUES('{this.ToString()}');"); } } catch (Exception exception) { using (dbContext.Database.BeginTransaction(IsolationLevel.Unspecified)) { dbContext.Database.ExecuteSqlRaw($"INSERT INTO [tblResponseLog]([ResponseBody])VALUES('ResponseBody Logger FAILED::{e}|{this.ToString()}');"); } } } } }
public async Task Invoke(HttpContext httpContext, GoCanvasLoggingDbContext dbContext) { if (httpContext.Request.Path.HasValue) { if (httpContext.Request.Path.Value.Contains("api/submission/new")) { RequestToLog rtl = new RequestToLog(httpContext); rtl.Save(dbContext); MemoryStream ms = (MemoryStream)httpContext.Request.Body; ms.Seek(0, SeekOrigin.Begin); httpContext.Request.Body = ms; } } await _next(httpContext); }