2013-10-09 19 views
10

Sto diventando pazzo qui ... sembra un compito molto semplice. Prima di tutto, conosco solo le basi del Web Api e MVC - quindi per favore non mi spiate.Instradamento sottocartella ASP.NET Web Api Controller

Nel progetto ho bisogno di creare logicamente sottocartelle controller (per scopi organizzativi). Avevo la sensazione che non fosse così semplice come pensavo. Ho il percorso di default in questo modo:

config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

che funziona come dovrebbe direttamente dalla cartella controllori nel mio progetto. Ho aggiunto una sottocartella nei controller/report della cartella controller. Ho cercato un bel po 'e non riesco a trovare una soluzione. Come posso aggiungere una rotta che indirizzerà alla sottocartella. ho provato:

config.Routes.MapHttpRoute(
      name: "ReportingApi", 
      routeTemplate: "api/Reports/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 

e:

config.Routes.MapHttpRoute(
      name: "ReportingApi", 
      routeTemplate: "api/Reports/{id}", 
      defaults: new { controller = "userunit" id = RouteParameter.Optional } 
+0

Il routing in realtà non utilizza il filesystem, ma indirizza le azioni del controllore. –

+0

Ma a un certo punto non è necessario fornire un percorso se un controller si trova in una sottocartella? Non trova solo lo fa? –

+0

Per convenzione, il framework cerca i controller nella cartella 'Controller', ma oltre a ciò non sta guardando i percorsi. Perché è necessario creare una sottocartella per ogni controller? Se vuoi, puoi giocare con il routing per ottenere gli URL giusti, se è quello che cerchi. –

risposta

3

Nevermind io sono un idiota ... ho lasciato il percorso di default in, rimosso i "Rapporti" nell'URL. Ha trovato il controller anche se si trovava in una sottocartella.

+0

Ho la sensazione che questo causerà problemi lungo la linea. Che cosa succede se hai due controller identicamente denominati separati da diversi spazi dei nomi a causa dell'uso di sottocartelle. Questo è semplicemente una svista nel design WebApi. – MoonStom

Problemi correlati