#asp.net-core #.net-core #asp.net-core-webapi
#asp.net-core #.net-ядро #asp.net-core-webapi
Вопрос:
У меня есть несколько служб RESTful, которые работают друг с другом. В одном сценарии я хочу отправить некоторые данные из одной службы в другую службу, и я хочу прикрепить некоторую информацию в заголовке запроса. Я видел несколько случаев для этого, и в конце концов я придумал этот обходной путь:
var httpClient = new HttpClient();
httpClient.Timeout = TimeSpan.FromMinutes(3);
var httpRequestMessage = new HttpRequestMessage {
Method = HttpMethod.Post,
RequestUri = new Uri(service2Address),
Content = new StringContent(JsonConvert.SerializeObject(obj))
};
httpRequestMessage.Headers.Add("myCustomHeaderKey", "myCustomHeaderValue");
var response = await httpClient.SendAsync(httpRequestMessage);
var responseString = await response.Content.ReadAsStringAsync();
С этими строками кода Post
запрос отправляется, но service2
когда я хочу получить заголовки из запроса, нет никаких признаков коллекции myCustomHeaderKey
заголовков. Я проверяю Request.Headers
в Visual Studio Watch и даже пытаюсь получить пользовательский заголовок Request.Headers["myCustomHeaderKey"]
. Так что же здесь не так?
РЕДАКТИРОВАТЬ 1
Эта реализация основана на этом руководстве.
Комментарии:
1. Почему бы вам не добавить заголовок здесь;
var httpRequestMessage = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri(service2Address), Content = new StringContent(JsonConvert.SerializeObject(obj)) };
2. Привет @CasperDijkstra, это не имеет никакого значения для вывода при добавлении заголовка при инициализации
httpRequestMessage
или после него.
Ответ №1:
Я разработал код, подобный вашему. Создали два Asp.net базовый проект 3.1 со стандартным шаблоном. Одна служба запускает localhost: 44320, а другая localhost: 44300 localhost: 44320 / PostService написала ваши коды.
Затем получите этот URL-адрес с помощью браузера. localhost: 44320 / прогноз погоды / функция IncomeService выглядит следующим образом
Наконец, я поставил точку останова туда, где получить заголовок запроса. Результат, как показано ниже
Это не проблема. Возможно, вы используете промежуточное программное обеспечение заголовка запроса на изменение. Или если вы используете что-то вроде nginx. возможно, эта проблема связана с конфигурацией nginx.