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?

1 Answer 1

9

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!

Sign up to request clarification or add additional context in comments.

1 Comment

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!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.