Closed
Description
Controllers that use convention-based routing do not always return 400 for actions that match in some API versions, but not others.
For example:
[ApiVersion( "1.0" )]
public class MyController : ApiController
{
public IHttpActionResult Get() => Ok();
}
[ApiVersion( "2.0" )]
public class My2Controller : ApiController
{
public IHttpActionResult Get() => Ok();
public IHttpActionResult Patch() => StatusCode( HttpStatusCode.NoContent );
}
[ApiVersion( "3.0" )]
public class My3Controller : ApiController
{
public IHttpActionResult Get() => Ok();
}
The requested routes should produce the following results:
Request | Expected Result | Actual Result |
---|---|---|
PATCH /my?api-version=1.0 | 400 | 404 |
PATCH /my?api-version=2.0 | 204 | 204 |
PATCH /my?api-version=3.0 | 400 | 404 |