如何在ASP.NET Core Controller中返回自定义HTTP响应?

问题描述

在ASP.NET核心MVC中,如何返回自定义HTTP响应以及自定义HTTP代码?我希望能够自己构建响应,最好从控制器返回响应。

  public IActionResult Index()
    {
          // set custom HTTP response and return
    }

....有人获取索引,我应该能够像下面一样手动发送响应,在这里我可以控制响应的各个方面。我什至可以只返回自己构建的字符串即可。

HTTP/1.1 200 OK
Date: Mon,27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed,22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed

如何在ASP.NET Core MVC中做到这一点?

解决方法

我意识到我的想法有点隧道化,答案比我最初预期的要简单得多。

        public void Index()
    {
        Response.StatusCode = 200;
        Response.StartAsync();

        return;
    }

这允许人们自己简单地将数据添加到响应中并将其发送给客户端。我正在使用ASP.NET Core 3.1 MVC。

,

适应here的答案...

public IActionResult Index()
{
    return StatusCode((int)HttpStatusCode.MovedPermanently);
}

另一个示例,如果您想在响应正文中传回400状态代码和验证错误...

public IActionResult Index()
{
    var validationErrors = _repository.Validate()
    return StatusCode((int)HttpStatusCode.BadRequest,validationErrors);
}