Search code examples
c#asp.net-web-apiasp.net-web-api-routing

Asp.net Webapi using [FromUri] with Route that has two parameter


   [Route("Street/{ZoneID}/{StreetID}/")]
    public HttpResponseMessage GetStreet(int ZoneID,int StreetID,[FromUri]       RealEstateFilter Filter)

StreetID Is Always 0 when Following Request Is Being Sent From Client

http://localhost:1887/Street/34/23295?MunZone=7&StartDate=&EndDate=

but it works without any optional parameter

http://localhost:1887/Street/34/23295

how should i configure webapi to be able to read [Fromuri]


Solution

  • Calling Street/34/23295?MunZone=7&StartDate=&EndDate= with my Controller Defined as:

    public class SomeController : ApiController
    {
        [Route("Street/{ZoneID}/{StreetID}/")]
        public HttpResponseMessage GetStreet(int ZoneID, int StreetID, [FromUri] RealEstateFilter Filter)
        {
            return null;
        }
    

    Gave:

    enter image description here

    When I defined RealEstateFilter as:

    public class RealEstateFilter
    {
        public int? MunZone { get; set; }
        public DateTime? StartDate { get; set; }
        public DateTime? EndDate { get; set; }
    }
    

    My web.api version is:

      <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net451" />
      <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net451" />
      <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net451" />
      <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net451" />
      <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net451" />
      <package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net451" developmentDependency="true" />
    

    I created my Web.Api project from scratch, and this is the only thing in it. Is it possible you have some other route that is interfering?