使用 IApplicationBuilder.Map 使用 UseMvc 生成嵌套路径

Using IApplicationBuilder.Map generates nested paths with UseMvc

我正在尝试新的 asp.net 5 和 VSNET 2015 RC。

我的网络应用程序的配置: Microsoft.AspNet.Mvc6.0.0-beta4

我对这种行为感到很困惑: 如果我使用

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

一切正常。我通过调用我的控制器 http://localhost:1234/api/values 一切正常。

为了我的测试,如果我在

中更改上面的代码片段
 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
 {
      ...
      app.Map("/api", api => {
         ...
         api.UseMvc();
       });
 }

现在每次我用上面的地址调用控制器时,应用程序都会返回 404。

我哪里错了?

当你在做 app.Map 的时候。您实际上正在做的是向您的 HTTP 管道添加一个中间件,它说:当一个 HTTP 请求进入时匹配路径 /api 这就是我想要发生的事情。

然后你说:当请求满足 /api 路由时,我希望 MVC 运行。由于配置是嵌套的,因此您的控制器的新路径变为:http://localhost:1234/api/api/values.

希望这对您有所帮助!