【发布时间】:2016-02-22 20:53:24
【问题描述】:
我需要定义基于模板的路由到控制器,然后在 ASP.NET Core 中为操作定义基于属性。比如:
public class Foo : Controller
{
[HttpGet]
public object Get()
{
return new
{
ID = "A"
};
}
[HttpPost]
public object Create([FromBody]dynamic entity)
{
return new
{
ID = "B"
};
}
}
路线
app.UseMvc(routes =>
{
routes.MapRoute("Settings", "settings/api/foo",
new { controller = "Foo" }
);
});
我希望这能奏效:
GET /settings/api/foo
POST /settings/api/foo
不幸的是,事实并非如此。看起来路由属性被忽略了。实现需求的最佳方式是什么?
【问题讨论】:
-
GET 和 POST 都得到 404 吗?
-
那些 (
[HttpPost]&[HttpGet]) 不是路由属性,它们是 HTTP 方法属性。路由属性看起来像[Route("settings/api/foo")] -
@danludwig 他们是 IRouteTemplateProvider 所以他们是路由属性
-
@Shyju 是的,我可以在路由中使用带有方法限制的 hack,但这是每个控制器的 x4 映射,我想避免这种情况
-
对不起,我没有把这个作为核心 1.0 问题来阅读。
标签: c# asp.net-core asp.net-core-mvc