How to get more detailed exception in ABP?

老子叫甜甜 提交于 2019-12-04 21:14:00

问题


I created a CrudAppService. When I invoke its dynamic API by using swagger, I get a generic 500 error with this description:

{
  "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
}

How can I get a more detailed exception to debug? Is there something I have to enable?


回答1:


Check error in Logs.txt.

From the documentation on 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" />



回答2:


You can simply send the exception details to the client by enabling one of ABP's configurations (SendAllExceptionsToClients) in ***.Web.Core Module, like this:

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

Then you get the exception details on the client. Recommended only during development.




回答3:


If you use CurrentUnitOfWork, you can catch the exception also and using UserFriendlyException you can throw the desired exception. UserFriendlyException is a specific type of exception so ABP directly shows exception message to the end user.

Example:

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


来源:https://stackoverflow.com/questions/48050689/how-to-get-more-detailed-exception-in-abp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!