我有一个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."
}
那么我有办法在响应中同时保留“状态”和自定义文本吗?
答案 0 :(得分:1)
在调用StatusCode()
时不使用字符串,而使用对象,它将被正确地序列化。
示例:
return StatusCode((int)HttpStatusCode.Locked, new { status = (int)HttpStatusCode.Locked, message = ex.Message });