Я протестировал код только с добавлением атрибута [HttpGet], и, похоже, все в порядке, вот мой WebApiConfig
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
"ProductControllerLookup",
"api/product/Lookup/{provider}/{id}",
new {}
);
}
А вот и метод:
[System.Web.Http.HttpGet]
public async Task<string> Lookup(string id)
{
var temp = HttpContext.Current.Request.QueryString["provider"];
// do lookup
return "";
}
И я использую ваши URL, и все они используют метод, а ID и провайдер заполнены.