在mvc 4中(但我认为在所有mvc版本中)我需要拦截DbEntityValidationException。
在这个阶段,我需要在简单的日志中显示此对象中的错误。
在捕获中,我有这个代码:
foreach (var eve in EventityValidationErrors)
{
foreach(var ve in eve.ValidationErros)
{
Console.Writeline(ve.PropertyName,ve.ErrorMessage)
}
}
,这非常有用。
现在,我的工作是尝试在视图中显示此异常信息(仅在开发阶段)。
有人知道是否有快速的方法吗? (理想情况下使用外部nuget组件)
答案 0 :(得分:0)
Elmah有一个nuget package,可以快速提供详细错误。
你需要稍微改变你的捕获量。这是抓住你的异常,创建一个包含你的数据的新异常,然后抛出这个异常并让Elmah处理它。
catch(DbEntityValidationException dbEx)
{
var sb = new StringBuilder();
foreach (var eve in dbEx.EntityValidationErrors)
{
foreach(var ve in eve.ValidationErrors)
{
sb.Append(ve.PropertyName);
sb.Append(ve.ErrorMessage); //format to your needs
}
}
var detailedException = new Exception(sb.ToString(), dbEx)
}
有很多关于如何设置Elmah以捕获所有未处理的mvc异常的文档。