Return 带有自定义消息的 StatusCode
Return StatusCode with custom message
我有一个可以抛出锁定异常的 C# 应用程序。我想 return Microsoft.AspNetCore.Mvc.StatusCode of HttpStatusCode.Locked 并在响应中添加自定义消息。
当前在控制器中,如果我使用:
[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);
}
它只是 return 异常消息的文本,例如:
The organisation 6ad1f1c0-2c47-4849-acbb-9eca56b568cf is offline.
但是,如果我将 return 更改为:
return StatusCode((int)HttpStatusCode.Locked);
然后它将 return 以下响应:
{
"status": 423,
"traceId": "|8f3060e2-4338773910204188."
}
那么有没有办法让我在响应中同时保留 "status" 和自定义文本?
调用时不要使用字符串StatusCode()
,使用对象,它会被正确序列化。
示例:
return StatusCode((int)HttpStatusCode.Locked, new { status = (int)HttpStatusCode.Locked, message = ex.Message });
我有一个可以抛出锁定异常的 C# 应用程序。我想 return Microsoft.AspNetCore.Mvc.StatusCode of HttpStatusCode.Locked 并在响应中添加自定义消息。
当前在控制器中,如果我使用:
[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);
}
它只是 return 异常消息的文本,例如:
The organisation 6ad1f1c0-2c47-4849-acbb-9eca56b568cf is offline.
但是,如果我将 return 更改为:
return StatusCode((int)HttpStatusCode.Locked);
然后它将 return 以下响应:
{
"status": 423,
"traceId": "|8f3060e2-4338773910204188."
}
那么有没有办法让我在响应中同时保留 "status" 和自定义文本?
调用时不要使用字符串StatusCode()
,使用对象,它会被正确序列化。
示例:
return StatusCode((int)HttpStatusCode.Locked, new { status = (int)HttpStatusCode.Locked, message = ex.Message });