2012-07-05 8 views
8

estoy luchando para averiguar la configuración de enrutamiento necesaria para apoyar el siguiente escenario simple:MVC 4 Web API - Rutas de claves compuestas

http..service/api/objects/key1/key2 

me siento como que he intentado todo.

El mayor problema es que cada vez que se ve como si hubiera agrietado, me parece que

http..service/api/objects/key1 

va a parar a la IQueryable sin parámetros Obtener.

Respuesta

4

Creo que lo he clavado.

routes.MapHttpRoute(
    name: IQueryableObjectsApiRouteName, 
    routeTemplate: "api/objects", 
    defaults: new { controller = "objects" } 
); 

routes.MapHttpRoute(
    name: ObjectsApiRouteName, 
    routeTemplate: "api/objects/{siteId}/{assetId}", 
    defaults: new { controller = "objects", siteId = "", assetId = "" } 
); 

Necesito configurar dos rutas explícitas para cada controlador con claves compuestas. Los valores predeterminados para las teclas son "", que detecto en el controlador y arrojo mi propio 404.

Funciona para mí. Puedo ir a almorzar ahora.

+0

¿podría especificar los parámetros del método de su controlador? :) Me gustaría saber cómo se ve con la clave compuesta – Roylee

+1

Lo siento Roylee, he dejado ese contrato/cliente. Yo esperaría que simplemente sería 'público SomeModel Get (string siteId, string assetId)' embargo. –

+0

Está bien :) Lo tengo :) Sí, tienes razón – Roylee

Cuestiones relacionadas