Hom*_*mam 0 c# asp.net-core aspnetboilerplate
我想向异常添加一个 ID (GUID) 并且:
我应该在哪里生成此日志 ID 值并将其添加到记录的异常消息中。在哪里更改以下默认响应?
{
"targetUrl": null,
"result": null,
"success": false,
"error": {
"message": "An internal error occurred during your request!",
"details": "..."
},
"unAuthorizedRequest": false
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 .NET Core 版本。
如果要禁用显示特定 AJAX 调用的消息,请添加abpHandleError: false到 abp.ajax 选项中。
或者您可以禁用框架异常包装器的默认行为
public class PeopleController : AbpController
{
[HttpPost]
[WrapResult(WrapOnSuccess = false, WrapOnError = false)]
public JsonResult SavePerson(SavePersonModel person)
{
//TODO: save new person to database and return new person's id
return Json(new {PersonId = 42});
}
}
Run Code Online (Sandbox Code Playgroud)
另一件事是;您可以通过以下配置向客户端发送异常详细信息
...
using Abp.Web.Configuration;
...
public override void PreInitialize()
{
Configuration.Modules.AbpWebCommon().SendAllExceptionsToClients = true;
}
...
Run Code Online (Sandbox Code Playgroud)
https://aspnetboilerplate.com/Pages/Startup-Configuration#configuring-modules
结果包装和异常处理:
如果操作已成功执行,ASP.NET Boilerplate 默认不会包装 Web API 操作。然而,它处理和包装异常。您可以将 WrapResult/DontWrapResult 属性添加到操作和控制器以进行更精细的控制。您可以从启动配置中更改此默认行为(使用 Configuration.Modules.AbpWebApi()...)。有关结果包装的更多信息,请参阅 AJAX 文档。
包装结果
ASP.NET Boilerplate 使用 AjaxResponse 对象包装动态 Web API 操作的返回值。有关包装的更多信息,请参阅 ajax 文档。您可以启用/禁用每个方法或每个应用程序服务的包装。请参阅此示例应用程序服务:
public interface ITestAppService : IApplicationService
{
[DontWrapResult]
DoItOutput DoIt(DoItInput input);
}
Run Code Online (Sandbox Code Playgroud)
https://aspnetboilerplate.com/Pages/Documents/Dynamic-Web-API?searchKey=wrap#wrapping-results
最后,您可以编写自己的 ResultWrapperHandler ...
public class PeopleController : AbpController
{
[HttpPost]
[WrapResult(WrapOnSuccess = false, WrapOnError = false)]
public JsonResult SavePerson(SavePersonModel person)
{
//TODO: save new person to database and return new person's id
return Json(new {PersonId = 42});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1417 次 |
| 最近记录: |