можно просто позвонить

тирую свой API из Web API 2 в ASP.NET Core Web API. Раньше я мог добавить пользовательский заголовок следующим образом:

  HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
  response.Headers.Add("X-Total-Count", count.ToString());
  return ResponseMessage(response);

Как добавить пользовательский заголовок в ASP.NET Core Web API?

Ответы на вопрос(2)

Решение Вопроса

HttpContext из входящего httpRequest и добавьте свои собственные пользовательские заголовки вResponse объект до вызова return.

Если вы хотите, чтобы ваш настраиваемый заголовок сохранялся и добавлялся во все запросы API на нескольких контроллерах, вам следует рассмотреть возможность созданияMiddleware Компонент, который делает это для вас, а затем добавить его в конвейере запросов Http вStartup.cs

public IActionResult SendResponse()
{
    Response.Headers.Add("X-Total-Count", "20");

    return Ok();
}    

Есть пример для простогоGET действие, которое возвращает вершинуX записи из некоторого списка, а такжеcount в заголовке ответаX-Total-Count:

using System;
using System.Linq;
using System.Net;
using Microsoft.AspNetCore.Mvc;

namespace WebApplication.Controllers
{
    [Route("api")]
    public class ValuesController : Controller
    {
        [HttpGet]
        [Route("values/{top}")]
        public IActionResult Get(int top)
        {
            // Generate dummy values
            var list = Enumerable.Range(0, DateTime.Now.Second)
                                 .Select(i => $"Value {i}")
                                 .ToList();
            list.Reverse();

            var result = new ObjectResult(list.Take(top))
            {
                StatusCode = (int)HttpStatusCode.OK
            };

            Request.HttpContext.Response.Headers.Add("X-Total-Count", list.Count.ToString());

            return result;
        }
    }
}

URL выглядит какhttp://localhost:3377/api/values/5 и результаты (для 19 фиктивных записей, сгенерированных, такX-Total-Count значение будет 19)

["Value 18","Value 17","Value 16","Value 15","Value 14"]
 brumScouse17 апр. 2018 г., 22:13
Это кажется счастливым, потому что мы в основном устанавливаем результат, а затем свойства в 2 местах. Это может быть заключено в результат произвольного действия. Поскольку я печатаю, я как раз собираюсь создать ContentResultWithHeaders. Но, сказав это, это похоже на большие усилия.
 RAM03 нояб. 2018 г., 10:01
Базовый классMicrosoft.AspNetCore.Mvc.Controller уже включает в себя собственностьResponse, Поэтому вместо звонкаRequest.HttpContext.Response.Headers можно просто позвонитьResponse.Headers.

Ваш ответ на вопрос