c# - 使用自定义消息返回 StatusCode
问题描述
我有一个可以引发锁定异常的 C# 应用程序。我想返回 HttpStatusCode.Locked 的 Microsoft.AspNetCore.Mvc.StatusCode 并向响应中添加自定义消息。
如果我使用,目前在控制器中:
[ProducesResponseType(StatusCodes.Status423Locked)]
public async Task<IActionResult> GetSomething(Guid id)
{
try
{
await MyService
.GetAsync(id)
.ConfigureAwait(false);
return Ok();
}
catch (IsLockedException ex)
{
return StatusCode((int)HttpStatusCode.Locked, ex.Message);
}
它只返回异常消息的文本,例如:
The organisation 6ad1f1c0-2c47-4849-acbb-9eca56b568cf is offline.
但是,如果我将返回更改为:
return StatusCode((int)HttpStatusCode.Locked);
然后它将返回以下响应:
{
"status": 423,
"traceId": "|8f3060e2-4338773910204188."
}
那么有没有办法让我在响应中同时保留“状态”和自定义文本?
解决方案
调用时不要使用字符串StatusCode()
,使用对象,它会被正确序列化。
例子:
return StatusCode((int)HttpStatusCode.Locked, new { status = (int)HttpStatusCode.Locked, message = ex.Message });
推荐阅读
- elasticsearch - 在管道 Kibana 中排除“'”
- django-rest-framework - 如何在 Django CoreAPI 文档中显示嵌套对象字段
- image - 可变借用中的不可变借用
- r - R中几个big.matrix对象的元素平均值,na.rm = TRUE
- angular - 订阅方法多次调用Angular 5
- javascript - 最后一个功能被触发而不是第一个
- java - 如何使用 intelij-javadoc 自定义生成的文档模板
- python - Pandas 数据框合并/链接值
- c# - Moq 中没有退货方法
- windows - 在多 DPI 环境中将 HIMETRIC 转换为像素