Ich erstelle einen benutzerdefinierten JsonConverter, der in einem Attribut einer Modellklasse verwendet werden soll. Das Modell wird als Eingabeparameter in einem Web-API-Controller verwendet. In meinem JsonConverter werfe ich einen FormatException
wenn ich die Eingabe nicht mag.Wie wird eine Ausnahme abgefangen, die in einem JsonConverter-Attribut ausgelöst wird?
Hier ist ein Teil meines Modells ist:
public class PropertyVM
{
public string PropertyId { get; set; }
[JsonConverter(typeof(BoolConverter))]
public bool IsIncludedInSearch { get; set; }
}
Und hier ist mein Controller-Aktion:
[HttpPost, Route("{propertyId}")]
public IHttpActionResult UpdateProperty(string propertyId, [FromBody] PropertyVM property)
{
bool success;
try
{
property.PropertyId = propertyId;
success = _inventoryDAL.UpdateProperty(property);
}
catch (Exception ex) when
(
ex is ArgumentException
|| ex is ArgumentNullException
|| ex is ArgumentOutOfRangeException
|| ex is FormatException
|| ex is NullReferenceException
|| ex is OverflowException
)
{
return BadRequest(ex.Message);
}
if (!success)
{
return NotFound();
}
return Ok();
}
Wenn ich den Controller mit einem schlechten Wert für IsIncludedInSearch
nennen, erwartete ich meine die FormatException
in fangen Controller, aber das passiert nicht. Die Ausnahme wird in meinem Konverter ausgelöst, aber das passiert, wenn der Medienformatierer ausgeführt wird. Als ich in meinen Controller komme, wurde die Ausnahme ausgelöst, aber ich kann sie nicht verstehen. Also gebe ich OK
zurück, obwohl ich einen schlechten param habe.
Wie bekomme ich meinen Controller zu sehen, dass der Konverter eine Ausnahme ausgelöst hat, so dass ich die entsprechende Antwort zurückgeben kann?
Perfekt, danke! – Val