如何在ABP中获得更详细的例外?

时间:2018-01-01 15:03:01

标签: aspnetboilerplate exception-logging

我创建了一个CrudAppService。当我使用 swagger 调用其动态API时,出现此描述时出现通用500错误:

{
  "result": null,
  "targetUrl": null,
  "success": false,
  "error": {
    "code": 0,
    "message": "An internal error occurred during your request!",
    "details": null,
    "validationErrors": null
  },
  "unAuthorizedRequest": false,
  "__abp": true
}

如何获得更详细的调试异常?我有什么要启用的吗?

ABP + ASP.NET核心

3 个答案:

答案 0 :(得分:5)

您可以通过将ABP配置之一(SendAllExceptionsToClients)设置为true来简单地将异常详细信息发送给客户端

Configuration.Modules.AbpWebCommon().SendAllExceptionsToClients = true;
***。Web.Core模块中的

public override void PreInitialize()
{   
    Configuration.Modules.AbpWebCommon().SendAllExceptionsToClients = true;
}

然后,您将在客户端上获得异常详细信息。 (仅在开发过程中推荐)

答案 1 :(得分:4)

检查 Logs.txt 中的错误。

来自Logging的文档:

  

配置

     

从ASP.NET Boilerplate模板创建应用程序时,所有配置都是为Log4Net完成的。​​

     

...

     

它在应用程序的 log4net.config 文件中定义,如下所示:

     
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" >
    <file value="Logs/Logs.txt" />

答案 2 :(得分:1)

如果您使用CurrentUnitOfWork,您也可以捕获异常并使用 UserFriendlyException您可以抛出所需的异常。 UserFriendlyException是一种特定类型的异常,因此ABP直接向最终用户显示异常消息。

示例:

try
{
    await _repository.InsertAsync(...);
    await CurrentUnitOfWork.SaveChangesAsync();
}
catch(Exception ex)
{
    throw new UserFriendlyException("user friendly exception message");
}