【发布时间】:2015-09-07 16:29:46
【问题描述】:
在我使用 ASP.NET 5 的过程中,我对一些统一的控制器概念感到困惑。请告诉我我做错了什么。
在 ASP.NET 5 中,相同的控制器用于 MVC 和 WebApi,只是在 Web Api 控制器上方定义的路由属性不同。我的想法是“路线”属性仅用于定义路线。但是在某些情况下,在顶部定义“Route”属性会将控制器指定为 Web Api 控制器。
在 Startup.cs 中,我有以下路由配置。
app.UseMvc(routes => {
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapWebApiRoute(
"DefaultApi",
"api/{controller}/{id?}");
});
在 Home Controller 中,有“HttpGet”动作用于接受 WebApi get 请求,但没有“Route”属性就无法调用,但启动类中已经定义了 web api 的路由。
public class HomeController : Controller {
public IActionResult Index() {
return View();
}
//[Route("api/[controller]")]
[HttpGet]
public IEnumerable<string> Get() {
return new string[] { "value1", "value2" };
}
}
在 Values 控制器中,无法访问“About”操作,因为对“/values/about”的调用将给出错误not found。并且“/api/values/about”将重定向到“Get”操作。
[Route("api/[controller]")]
public class ValuesController : Controller {
public IActionResult About() {
ViewData["Message"] = "Your application description page.";
return View();
}
// GET: api/values
[HttpGet]
public IEnumerable<string> Get() {
return new string[] { "value1", "value2" };
}
}
但是虽然我在 startup.cs 文件中指定了 web api 路由,但我无法访问“/api/home”路径。 我做错了什么?
【问题讨论】:
-
抱歉,我在您所写的内容中找不到问题。可以澄清一下吗?
-
我的问题是,我在startup.cs文件中指定了web api路由,但是我无法访问“/api/home”路径