ASP.Net Web API控制器中具有相同路由名称的Post Action方法重载

问题描述 投票:1回答:2

是否有可能使用相同的路由名称和相同的方法但参数不同的两个动作?我已经试过了:

[HttpPost]
[Route("gstr4")]
public HttpResponseMessage SubmitGSTR4([FromBody] RequestPayloadWithoutSign requestPayload)
{ }

[HttpPost]
[Route("gstr4")]
public HttpResponseMessage FileGSTR4([FromBody] RequestPayloadWithSign requestPayload)
{ }

我收到状态码500(InternalServerError),这是原始响应:

{"Message":"An error has occurred.","ExceptionMessage":"Multiple actions were found that match the request: \r\nFileGSTR4 on type APIPortal.Controllers.GSTR4Controller\r\nSubmitGSTR4 on type APIPortal.Controllers.GSTR4Controller","ExceptionType":"System.InvalidOperationException","StackTrace":"   at System.Web.Http.Controllers.ApiControllerActionSelector.ActionSelectorCacheItem.SelectAction(HttpControllerContext controllerContext)\r\n   at System.Web.Http.Controllers.ApiControllerActionSelector.SelectAction(HttpControllerContext controllerContext)\r\n   at System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)\r\n   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()"}
c# asp.net-web-api asp.net-web-api-routing asp.net-apicontroller
2个回答
0
投票

对于多个方法,与http Get相同的方法类型是不可能的。您应该选择其他路线


0
投票

只能使用不同的HTTP动词。否则,您必须定义不同的路线。

https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api

© www.soinside.com 2019 - 2024. All rights reserved.