Asp.Net Wep API - 返回包含异常详细信息的内部服务器错误



有没有办法返回带有异常详细信息的内部服务器错误?

例如,如果我有如下所示的内容:

[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
}

基本上,我想了解有关异常发生时的更多信息,以便我可以进行故障排除?

公开异常详细信息的最简单方法是设置配置属性 IncludeErrorDetailPolicy = Always in in HttpConfiguration or 中。网络会议.

https://learn.microsoft.com/en-us/aspnet/web-api/overview/advanced/configuring-aspnet-web-api

之后,您可以抛出您的执行并 asp.net 创建内部服务器错误响应。

另一种方法是创建自己的错误对象并使用信息重新调整它。

但是,出于安全原因,您应该小心提供有关内部服务器信息的大量信息。

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;
}
}
}

相关内容

最新更新