【发布时间】:2016-05-17 13:21:38
【问题描述】:
我正在使用 .Net 4.5.1 创建一个带有 MVC 6 的 ASP.Net 5 应用程序。我有一个使用 FromBody 参数自动获取对象的 POST 方法。
[HttpPost]
public IActionResult Insert([FromBody]Agent agent)
{
try
{
var id = service.Insert(agent);
return Ok(id);
}
catch (Exception ex)
{
return HttpBadRequest(ex);
}
}
这只是一个概念的证明,我不会只返回成功的 id 或错误的完整异常。
发送有效的 JSON 后,一切正常。但是,当发送无效的 JSON 时,我在调试期间遇到异常:
抛出异常:'Newtonsoft.Json.JsonReaderException' in Newtonsoft.Json.dll
附加信息:解析值后出现意外字符 遇到过:l。路径“名称”,第 2 行,位置 20。
问题是这个错误之后,方法调用正常,但是参数为空,异常没有传播。
我可以检查 null 并返回一个通用消息,但这不如原始消息有用,它包含重要信息,例如标签名称和无效字符的位置。
所以我想捕获这个异常并将它返回给 HTTP 调用者。我怎么做?像这样的:
{"error": "After parsing a value an unexpected character was encountered: l. Path 'Name', line 2, position 20"}
我知道我可以在 try/catch 块中手动捕获和反序列化 JSON,但这对我来说是不可接受的。我想这样做并继续使用 FromBody,我觉得这很有成效。
【问题讨论】:
标签: c# asp.net-mvc asp.net-core-mvc