【发布时间】:2018-04-15 10:01:29
【问题描述】:
我使用 ASP.NET OData 库实现了 OData 服务。
所以,我有一个像这样的控制器:
public class ProjectsController : ODataController
{
private readonly MyContext _db;
public ProjectsController(MyContext db)
{
_db = db;
}
[EnableQuery]
public IQueryable<Project> Get(string customQuery)
{
var query = _db.Projects;
if (!string.IsNullOrWhitespace(customQuery))
{
query = query.Where(/* something complex going here */);
}
return query.OrderByDescending(p => p.Id);
}
}
现在,这一切都很好。但是,在某些情况下,某些特定的“customQuery”可能会产生导致除以零的 SQL 代码。并且,作为结果,服务器发回状态 500 (oops) 和这样的错误对象:
{"error":{"code":"","message":"发生错误。"}}
这不是很丰富。我想捕获异常并将其翻译为 400 并带有一些有意义的消息(建议用户如何修复自定义查询)。
我试过设置全局异常过滤器,属性异常过滤器.. 没有运气。有什么想法吗?
【问题讨论】:
标签: c# asp.net asp.net-web-api odata