如何在 ABP 中获取更详细的异常?

How to get more detailed exception in ABP?

我创建了一个 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
}

如何获取更详细的异常进行调试?有什么我必须启用的吗?

检查Logs.txt中的错误。

来自 Logging 上的文档:

Configuration

All configuration is done for Log4Net when you create your application from ASP.NET Boilerplate templates.

...

It's defined in the log4net.config file of the application as shown below:

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

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

示例:

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

您可以通过在 ***.Web.Core 模块中启用 ABP 的配置之一 (SendAllExceptionsToClients) 将异常详细信息简单地发送到客户端,如下所示:

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

然后您在客户端上获得异常详细信息。 仅在开发期间推荐。

您可以在 project.Host\App_Data\Logs.txt 查看您的项目日志。