5

I'm trying the new asp.net 5 alongside VSNET 2015 RC.

Configuration of my webapp: Microsoft.AspNet.Mvc 6.0.0-beta4

I'm really confused about this behavior: if i use

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 {
      ...
      app.UseMvc();
 }

everything works. I call my controller via http://localhost:1234/api/values and all is ok.

For the sake of my testing if i change the snippet above in

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 {
      ...
      app.Map("/api", api => {
         ...
         api.UseMvc();
       });
 }

and now every time I call the controller with the address above, the app returs 404.

Where I'm wrong?

span
  • 5,405
  • 9
  • 57
  • 115
Valerio
  • 3,297
  • 3
  • 27
  • 44

1 Answers1

8

When you're doing app.Map. What you're actually doing is adding a middleware to your HTTP pipeline which is saying: when an HTTP request comes in that matches the path /api here's what I want to happen.

You're then saying: I want MVC to run when a request satisfies the /api route. Since the configurations are nested the new path to your controller becomes: http://localhost:1234/api/api/values.

Hopefully this helps!

N. Taylor Mullen
  • 18,061
  • 6
  • 49
  • 72
  • 1
    Thank you!!! I didn't know about this behavior! Thank you again!! FWIW: if on the controller class I change: [Route("api/[controller]")] to [Route("[controller]")] I can avoid the double "api/" in the address! – Valerio Jun 30 '15 at 07:30