问题
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