Atributo de enrutamiento con parámetros opcionales en ASP.NET Web API

Estoy intentando usar el enrutamiento de atributos de la API Web 2 para configurar una API personalizada. Tengo mi ruta funcionando de tal manera que se llama a mi función, pero por alguna razón debo pasar mi primer parámetro para que todo funcione correctamente. Las siguientes son las URL que quiero apoyar:

http://mysite/api/servicename/parameter1 http://mysite/api/servicename/parameter1?parameter2=value2 http://mysite/api/servicename/parameter1?parameter2=value2&parameter3=value3 http://mysite/api/servicename/parameter1?parameter2=value2&parameter3=value3&p4=v4 

Las últimas 3 URL funcionan pero la primera dice “No se encontró ninguna acción en el ‘nombre del controlador’ del controlador que coincida con la solicitud”.

Mi controlador se ve así:

 public class MyServiceController : ApiController { [Route("api/servicename/{parameter1}")] [HttpGet] public async Task Get(string parameter1, DateTime? parameter2, string parameter3 = "", string p4 = "") { // process } } 

La API web requiere establecer explícitamente los valores opcionales incluso para los tipos anulables … para que pueda intentar configurar lo siguiente y debería ver que su primera solicitud sea exitosa

 DateTime? parameter2 = null