在ASP.Net Core 3.0中使用端点路由配置多个HttpVerb

时间:2019-12-01 21:58:56

标签: .net asp.net-core .net-core asp.net-core-webapi asp.net-core-3.0

当我使用Visual Studio中的默认模板在新设置的WebApi项目的帐户控制器中具有多个具有相同动词的操作方法(即POST)时,出现异常。这是有关VS的信息:

Microsoft Visual Studio Enterprise 2019
Version 16.3.10
VisualStudio.16.Release/16.3.10+29519.87

这是我得到的例外:

InvalidOperationException: The method 'post' on path '/api/Account' is registered multiple times.

这是我在“启动”文件中的默认路由设置:

 app.UseEndpoints(endpoints => { endpoints.MapControllers(); });

我也尝试了以下方法,但没有帮助。

  endpoints.MapControllerRoute(
            name: "api",
            pattern: "{controller}/{id?}");

endpoints.MapControllerRoute(
            name: "api",
            pattern: "{controller}/{action}/{id?}");

我也已经在官方文档中阅读了有关终点路由的信息,但是我无法弄清楚我缺少什么。感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您需要传递模板名称,即[HttpPost("my-other-route")]

答案 1 :(得分:0)

尝试如图所示更改Route的{​​{1}}属性

Controller

您可以使用[Route("api/[controller]/[action]")] [ApiController] public class StudentsController : ControllerBase { ... } 之类的请求路由来调用PostStudent操作,而使用https://localhost:44346/api/students/postStudent之类的请求路由来调用PostStudentList操作。