Атрибут FromHeaderAttribute не работает для свойств - PullRequest
0 голосов
/ 21 сентября 2019

Я пытаюсь связать свойство модели, используя FromHeaderAttribute , которое в соответствии с документацией должно работать для параметров и свойств.

К сожалению, по некоторым причинам я не могу заставить его работать для свойств в PUT /Модели POST-запросов:

    public class TestModel
    {
        [FromBody]
        public string Value { get; set; }

        // The property I want to be bound from header
        [FromHeader(Name = "Origin")] 
        public string Origin { get; set; }
    }

    [HttpPost]
    public void Post(
        TestModel value,
        [FromHeader] string origin)
    {
        Console.WriteLine(value.Origin); // always empty
        Console.WriteLine(value.Value); // OK
        Console.WriteLine(origin); // OK
    }

Asp.Net Core App v2.2.0

1 Ответ

1 голос
/ 24 сентября 2019

Если вы хотите привязать значение заголовка запроса к одному свойству модели, вам нужно настроить SuppressInferBindingSourcesForParameters как true в ConfigureServices в Startup.cs, как показано ниже:

services.AddMvc().ConfigureApiBehaviorOptions(options => {
            options.SuppressInferBindingSourcesForParameters = true;
        }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

Используйте Почтальон с указанными ниже настройками, чтобы вызвать почтовое действие

Добавить заголовки: enter image description here

Установить значение в теле: enter image description here

Снимок экрана с результатом: enter image description here

Используйте PowerShell для вызова действия поста, измените свое тело, как показано ниже:

Invoke-WebRequest `
-Method 'POST' `
-Uri "http://localhost:50112/api/values" `
-Headers @{"Pragma"="no-cache"; "Cache-Control"="no-cache"; "Origin"="http://localhost" } `
-Body ("test"|ConvertTo-Json) `
-ContentType "application/json"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...