如何在 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
查看您的项目日志。
我创建了一个 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
查看您的项目日志。