モデルクラスの属性で使用するカスタムJsonConverterを構築しています。このモデルは、Web APIコントローラーの入力パラメーターとして使用されます。私のJsonConverterでは、入力が気に入らなければFormatException
を投げています。ここでJsonConverter属性でスローされた例外をキャッチする方法は?
は私のモデルの一部です:
public class PropertyVM
{
public string PropertyId { get; set; }
[JsonConverter(typeof(BoolConverter))]
public bool IsIncludedInSearch { get; set; }
}
そして、ここに私のコントローラのアクションです:
[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();
}
私はIsIncludedInSearch
に悪い値でコントローラを呼び出す場合、私は私の中でFormatException
をキャッチすることが期待しましたコントローラが、それは起こっていない。私のコンバータで例外がスローされますが、メディアフォーマッタが動作しているときに発生します。コントローラに入るまでに例外がスローされましたが、私はそれをキャッチできません。だから私は悪いparamを持っていてもOK
を返す。
コントローラーに例外がスローされたことを確認してもらうには、適切な応答を返すことができますか?
完璧、ありがとう! – Val