【发布时间】:2017-10-11 17:28:15
【问题描述】:
目前我的 Startup.cs 类中有以下内容:
app.UseMvc(routes =>
{
routes.MapRoute("default", "api/{controller}/{action=Get}");
});
我所有的 MVC 控制器都有一个 Get 方法,其中一些也有一个 Post。像这样的:
public class ExampleController : Controller
{
[HttpGet]
public MyType Get()
{
return GetMyTypeFromSomewhere();
}
[HttpPost("api/[controller]")]
public void Post([FromBody]MyType updated)
{
//do some stuff with the new instance
}
}
目前我需要在 Post 方法上使用 ("api/[controller]") 以便发布请求能够到达它。
我希望能够删除它并将 POST 请求默认重定向到控制器 Post 方法。问题是,如果我在当前状态下这样做,HTTP POST 请求最终将发布到/api/Example/Get。
我已经研究了MapGet 和MapPost,但是我可以找到的唯一实现是在传递的 RequestDelegate 中使管道短路、处理和响应。我的控制器方法永远不会以这种方式到达。
我怎样才能做到这一点?
编辑
这可能值得添加,一些控制器上有额外的 GET 和 POST 方法,可以在 api/controller/action 访问,这意味着我需要在某处指定到 {action} 的路由。然而,这样做意味着我的默认 Get 和 Post 方法不再只能通过控制器名称访问,因此添加 =Get 作为 MapRoute 中的默认操作
【问题讨论】:
标签: c# asp.net-core asp.net-core-mvc asp.net-core-2.0