[Route("")] [HttpPost] public IHttpActionResult CreateMax4Sale(EditMax4SaleViewModel max4saleViewModel) { int conflicts = ChangeMax4Sale(max4saleViewModel, "Add"); if (conflicts > 0) { var response = (conflicts == 1) ? Messages.existingConflict : String.Format(Messages.xExistingConflicts, conflicts); throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(response), ReasonPhrase = response }); } return Ok(max4saleViewModel); } [Route("")] [HttpPut] public IHttpActionResult UpdateMax4Sale(EditMax4SaleViewModel max4saleViewModel) { int conflicts = ChangeMax4Sale(max4saleViewModel, "Update"); if (conflicts > 0) { var response = (conflicts == 1) ? Messages.existingConflict : String.Format(Messages.xExistingConflicts, conflicts); throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(response), ReasonPhrase = response }); } return Ok(max4saleViewModel); }Now, the Update method shows correct error message (the one I produced) when there are conflicts. But the New method displays our generic error message instead. The difference between the two that one uses HttpPut and the other HttpPost attribute.