public async Task <IHttpActionResult> Msg0() { log.Debug("Msg0(.) started."); bool error = false; HttpStatusCode errorCode = System.Net.HttpStatusCode.InternalServerError; M0ResponseMessage m0Response = null; try { m0Response = await ClientDatabase.Message0(this.Request); } catch (WebException we) { error = true; log.Debug("Web Exception in Message 0: " + we.Message); HttpWebResponse WebResponse = we.Response as HttpWebResponse; errorCode = (HttpStatusCode)WebResponse.StatusCode; } catch (HttpResponseException re) { error = true; log.Debug("HttpResponseException in Message 0: " + re.Message); errorCode = (HttpStatusCode)re.Response.StatusCode; } catch (Exception e) { error = true; log.Debug("******* M0 Content Error"); log.Debug("Error: " + e.Message); errorCode = System.Net.HttpStatusCode.InternalServerError; } // Return response to client if (error) { log.DebugFormat("Msg0(.) returning HTTP status code {0}.", errorCode); try { ClientDatabase.RemoveTransaction(this.Request, Constants.msg0Str); } catch (Exception e) // This catches HttpResponseException also, which is what we want here { log.Debug("Exception in Message 0 while error cleanup RemoveTransaction(): " + e.Message); } return(StatusCode(errorCode)); } log.Debug("Msg0(.) success - Accepted HTTP response."); return(Json(m0Response)); }