【问题标题】:How to get more detailed exception in ABP?如何在 ABP 中获得更详细的异常?
【发布时间】:2018-06-11 13:15:22
【问题描述】:

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

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

【问题讨论】:

标签: asp.net-core aspnetboilerplate exception-logging


【解决方案1】:

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

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

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

【讨论】:

  • 我也有提到的问题。问题不是关于 web 项目 - 它是关于较低级别的 - Application layer (CrudAppService),所以我们需要在那里进行一些更改。
【解决方案2】:

检查 Logs.txt 中的错误。

来自Logging上的文档:

配置

当您从 ASP.NET 样板模板创建应用程序时,Log4Net 的所有配置都已完成。

...

在应用的log4net.config文件中定义如下:

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

【讨论】:

    【解决方案3】:

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

    例子:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-25
        • 1970-01-01
        • 2013-02-15
        • 2014-04-28
        • 1970-01-01
        • 2013-03-31
        相关资源
        最近更新 更多