问题描述
我想用ABP .NET Core返回异常的详细信息,我注意到的是当我转到AbpAuditLogs表和App_Data \ Logs logFile时,它们包含详细的异常,但是当我使用以下方法返回异常时,它仅显示没有任何详细信息的一般异常(500内部服务器错误)
try{
:
:
:
}
catch (Exception ex)
{
throw new System.ArgumentException(ex.InnerException.Message.ToString(),"original");
}
更新:
我将进一步解释,以使问题更清楚:
上面这个问题与我处理异常的方式有关。 问题是,当从 swagger或Postman 发出对服务的请求时,总是看到状态错误500的常规错误,没有任何详细信息,这迫使我从Log File或Log Table中查看异常的详细信息,我想直接从 Swagger或Postman 看到异常的详细信息(例如 FileNotFoundException ),而不必返回到日志文件或AbpAuditLogs表。
解决方法
我认为用户友好异常将为您服务。
因为如果异常实现了IUserFriendlyException接口,则ABP不会更改其Message和Details属性并将其直接发送给客户端。
throw new UserFriendlyException(
"Username should be unique!"
);
您可以找到更多信息here。
,实际上,我找到了@Mehdi Daustany的答案in this question。我所做的正是@Mehdi Daustany的答案,我添加了以下代码:
if (_env.EnvironmentName.ToLower() == "development")
Configuration.Modules.AbpWebCommon().SendAllExceptionsToClients = true;
在***。Web.Core下,然后在Swagger中出现了例外的详细信息
,services.Configure<AbpExceptionHandlingOptions> (options =>
{
options.SendExceptionsDetailsToClients = true;
});
以上代码将配置abp以返回所有异常详细信息。只需将其添加到配置中即可。