返回带有自定义消息的StatusCode

问题描述 投票:0回答:1

我有一个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."
}

所以我有办法在响应中同时保留“状态”和自定义文本吗?

c# http-status-codes
1个回答
0
投票

[调用StatusCode()时不使用字符串,使用对象,它将被正确地序列化。

示例:

return StatusCode((int)HttpStatusCode.Locked, new { status = (int)HttpStatusCode.Locked, message = ex.Message });
© www.soinside.com 2019 - 2024. All rights reserved.