public IHttpActionResult PostVolumeCost(VolumeCostWEB volume) { // Получим все заголовки запроса: ShowAllHeaders(); // отправка статусного кода 400 if (volume == null) { return(BadRequest()); } //---------- обработка частных случаев валидации ----------------->> // if (volume.TownFromId < 1) { ModelState.AddModelError("TownFromId", "Такого населенного пункта в базе данных не существует!"); } if (volume.TownToId < 1) { ModelState.AddModelError("TownToId", "Такого населенного пункта в базе данных не существует!"); } if (volume.TownFromId == volume.TownToId) { ModelState.AddModelError("common", "Города отправления и назначения - совпадают"); } if (volume.Weight <= 0) { ModelState.AddModelError("Weight", "Вес указан некорректно!"); } if (volume.Volume < 0) { ModelState.AddModelError("Volume", "Объем указан некорректно!"); } // Все ошибки валидаци сохраняются в объекте ModelState, который передается в метод BadRequest и, // таким образом, отправляется клиенту вместе с ошибкой 400. // if (!ModelState.IsValid) { return(BadRequest(ModelState)); } // costService.PostVolumeCost() // try { Mapper.Initialize(cfg => cfg.CreateMap <VolumeCostWEB, VolumeCostDTO>()); var volumeCostDTO = Mapper.Map <VolumeCostWEB, VolumeCostDTO>(volume); volume.Cost = CostService.PostVolumeCost(volumeCostDTO); } catch (ValidationException x) { ModelState.AddModelError(x.Property, x.Message); return(BadRequest(ModelState)); } catch (Exception x) { ModelState.AddModelError("common", x.Message); return(BadRequest(ModelState)); } // //---------- обработка частных случаев валидации -----------------// //++ Add output data to Headers collection string s_output = string.Format("x-costService.PostVolumeCost({0},{1},{2})", volume.TownFromId, volume.TownToId, volume.Weight); System.Web.HttpContext.Current.Response.Headers.Add(s_output, volume.Cost.ToString()); Trace.WriteLine(s_output + " = " + volume.Cost); return(Ok(volume.Cost)); }