i using global actionfilterattribute plug in logger logic , want save logger object database.
[attributeusage(attributetargets.method, allowmultiple = true)] public sealed class requirehttpheaderattribute : actionfilterattribute { public applicationdbcontext db = new applicationdbcontext(); public override async task onactionexecutedasync(httpactionexecutedcontext httpactionexecutedcontext, cancellationtoken cancellationtoken) { httpactionexecutedcontext executedcontext; var webservicerequesturi = httpactionexecutedcontext.request.requesturi; var webservicerequestmethod = httpactionexecutedcontext.request.method; task<string> content = httpactionexecutedcontext.request.content.readasstringasync(); string webservicerequestbody = content.result; if (webservicerequestbody == "") webservicerequestbody = "no-content"; var userid = httpactionexecutedcontext.request.getowincontext().authentication.user.claims.first().value; // sender address var myrequest = ((httpcontextwrapper)httpactionexecutedcontext.request.properties["ms_httpcontext"]).request; var ipaddress = myrequest.servervariables["http_x_forwarded_for"]; if (!string.isnullorempty(ipaddress)) { string[] iprange = ipaddress.split(','); int le = iprange.length - 1; string trueip = iprange[le]; } else { ipaddress = myrequest.servervariables["remote_addr"]; } var webservicerequestdate = datetime.now; fmbp_actionlog fmbp_actionlog = new fmbp_actionlog(); fmbp_actionlog.webservicerequeststring = webservicerequesturi.tostring(); fmbp_actionlog.webservicerequestmethod = webservicerequestmethod.tostring(); fmbp_actionlog.webservicerequestbody = webservicerequestbody; fmbp_actionlog.webservicerequestdate = datetime.now; fmbp_actionlog.ipaddress = ipaddress; fmbp_actionlog.userid = userid; fmbp_actionlog.statuscode = (int)httpactionexecutedcontext.response.statuscode; db.fmbp_actionlog.add(fmbp_actionlog); db.savechanges(); } } whats best way save fmbp_actionlog database? have been getting number of random errors
"exceptionmessage":"the changes database committed successfully, error occurred while updating object context. objectcontext might in inconsistent state.
this solved problem. not disposing db context.
using (var db = new applicationdbcontext()) { fmbp_actionlog fmbp_actionlog = new fmbp_actionlog(); fmbp_actionlog.webservicerequeststring = webservicerequesturi.tostring(); fmbp_actionlog.webservicerequestmethod = webservicerequestmethod.tostring(); fmbp_actionlog.webservicerequestbody = webservicerequestbody; fmbp_actionlog.webservicerequestdate = datetime.now; fmbp_actionlog.ipaddress = ipaddress; fmbp_actionlog.userid = userid; fmbp_actionlog.statuscode = (int)httpactionexecutedcontext.response.statuscode; db.fmbp_actionlog.add(fmbp_actionlog); // perform data access using context db.savechanges(); }
Comments
Post a Comment