Web API'm var MVC 4 Web API çerçevesini kullanarak çalışıyorum. Bir istisna varsa, şu anda yeni bir HttpResponseException atıyorum. yani:Web API'sinde özel hata nesneleri döndürün
if (!Int32.TryParse(id, out userId))
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid id"));
Bu sadece {"message":"Invalid id"}
ben daha ayrıntılı bir nesne döndürerek istisnalara bu yanıt üzerine daha fazla kontrol elde etmek istiyorum olan müşteriye bir nesne döndürür.
Böyle bir şeyi nasıl yapacağım? Hata nesnesini serileştirmenin ve yanıt mesajında ayarlamanın en iyi yolu mu?
Ben de ModelStateDictionary
içine biraz baktım ve bir "hack" bu bit ile geldi, ama yine de temiz bir çıkış değil:
var msd = new ModelStateDictionary();
msd.AddModelError("status", "-1");
msd.AddModelError("substatus", "3");
msd.AddModelError("message", "invalid stuff");
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, msd));
düzenlemek
bir benziyor Özel HttpError
ihtiyacım olan şey.
iş katmanı için özel bir istisna sınıf oluşturun:
Buvar error = new HttpError("invalid stuff") {{"status", -1}, {"substatus", 3}};
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, error));
Neden Message özelliğini saklıyorsunuz? Tabanı aramak ve mesajı bu şekilde iletmek daha güvenli olmaz mıydı? – Andy