是否可以通过异常详细信息返回内部服务器错误?
例如,如果我有以下内容:
[HttpPost]
public IHttpActionResult test(MyDto dto)
{
using (var transaction = _unitOfWork.BeginTransaction())
{
try
{
//do some stuff
transaction.Commit();
return Ok();
}
catch (Exception ex)
{
transaction.Rollback();
return InternalServerError(new Exception(ex.Message));
}
}
}
请给我以下内容。但是如您所见,没有内部异常详细信息可提供任何有意义的信息。
{
"message": "An error has occurred.",
"exceptionMessage": "An error occurred while updating the entries. See the
inner exception for details.",
"exceptionType": "System.Exception",
"stackTrace": null
}
基本上,我想了解有关异常发生的更多信息,以便我进行故障排除?
答案 0 :(得分:1)
公开异常详细信息的最简单方法是在HttpConfiguration或中设置配置属性IncludeErrorDetailPolicy = Always。 Web.conf。
https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/configuring-aspnet-web-api
在那之后,您可以抛出执行,asp.net会创建InternalServerError-Response。
另一种方法是创建自己的错误对象,并使用信息重新调整它。
但是出于安全原因,您应谨慎提供有关内部服务器信息的大量信息。
public static void Register(HttpConfiguration config)
{
Logger.Info("WebApiConfig: Register: Start");
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
// ...
}
[HttpPost]
public IHttpActionResult test(MyDto dto)
{
using (var transaction = _unitOfWork.BeginTransaction())
{
try
{
//do some stuff
transaction.Commit();
return Ok();
}
catch (Exception)
{
transaction.Rollback();
throw;
}
}
}