如何在asp.net core 2.1中使用自定义消息设置状态代码?

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

我正在使用asp.net核心版本2.1,我已经创建了一个示例API项目,它工作正常,但我无法使用自定义消息修改状态代码,例如:

邮递员:

200好的

期待:

200 Custom_Message

我试过的代码:

[HttpGet]
public IActionResult Get()
{
     Response.StatusCode = 200;
     Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = "Custom_Message";
     return Ok();
}

邮差目前的输出:

enter image description here

GitHub Repository

c# asp.net-core asp.net-core-webapi asp.net-core-2.1
1个回答
0
投票

我认为你应该创建自定义类:

public class CustomResult : OkResult
{
    private readonly string Reason;

    public CustomResult(string reason) : base()
    {
        Reason = reason;
    }

    public override void ExecuteResult(ActionContext context)
    {
        if (context == null)
        {
            throw new ArgumentNullException(nameof(context));
        }

        context.HttpContext.Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = Reason;
        context.HttpContext.Response.StatusCode = StatusCode;
    }
}

然后在你的控制器方法中:

[HttpGet]
public IActionResult Get()
{
     return new CustomResult("Custom reason phrase");
}

产量

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.