FromHeader Asp.NET Core binding to default value

15,196

Solution 1

form headers accept string not int so your code should be

[Route("test")]
public class TestController
{
        [Route("mult")]
        [HttpGet]
        public int Multiply([FromHeader]string x, [FromHeader]string y)
        {

            return Int32.Parse(x) * Int32.Parse(y);
        }
}

you have to get values of x and y in string and convert it to int

Solution 2

Apparently it was initially thought this wouldn't be needed and they were waiting for feedback. However, it looks like it will likely be in the 2.1.0 milestone according to issue 5859.

Share:
15,196
Guilherme
Author by

Guilherme

I'm currently CTO and system architect.

Updated on June 23, 2022

Comments

  • Guilherme
    Guilherme almost 2 years

    I'm testing Asp.Net core WebApi with the following basic controller:

    [Route("test")]
    public class TestController
    {
        [Route("mult")]
        [HttpGet]
        public int Multiply(int x, int y)
        {
            return x * y;
        }
    }
    

    Then, in Fiddler, I send the following request:

    enter image description here

    And, for some reason, the response is 0. Both x and y are binded to the default integer value when entering the method.

    I also tried:

    [Route("test")]
    public class TestController
    {
        [Route("mult")]
        [HttpGet]
        public int Multiply([FromHeader]int x, [FromHeader]int y)
        {
            return x * y;
        }
    }
    

    But the result is the same. What am I doing wrong?