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

C# ASP.Net Web API控制器中具有相同路由名称的Post操作方法重载,c#,asp.net-web-api,asp.net-web-api-routing,asp.net-apicontroller,C#,Asp.net Web Api,Asp.net Web Api Routing,Asp.net Apicontroller,是否可能有两个具有相同路由名称和相同方法但参数不同的操作? 我试过这个: [HttpPost] [Route("gstr4")] public HttpResponseMessage SubmitGSTR4([FromBody] RequestPayloadWithoutSign requestPayload) { } [HttpPost] [Route("gstr4")] public HttpResponseMessage FileGSTR4([FromBody] RequestPaylo

是否可能有两个具有相同路由名称和相同方法但参数不同的操作? 我试过这个:

[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()"}
{“消息”:“出现错误”,“异常消息”:“找到多个与请求匹配的操作:\r\n类型APIPortal.Controllers.GSTR4CONTRLER\r\n类型APIPortal.Controllers.GSTR4CONTRLER上的注册表项TR4”,“异常类型”:“System.InvalidOperationException”,“StackTrace”:“在System.Web.Http.Controllers.ApiControllerActionSelector.ActionSelectorCacheItem.SelectAction(HttpControllerContext controllerContext)\r\n在System.Web.Http.Controllers.ApiControllerActionSelector.SelectAction(HttpControllerContext controllerContext)\r\n在System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext,CancellationToken CancellationToken)\r\n位于System.Web.Http.Dispatcher.HttpControllerDispatcher.d_u1.MoveNext()“}

对于多个方法,不可能使用与http Get相同的方法类型。您应该使用不同的路由

对于多个方法,不可能使用与http Get相同的方法类型。您应该使用不同的路由

只能使用不同的http谓词。否则,您必须定义不同的路由


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



这不可能,但对HttpGet可能?不,这不可能。您可以使用不同的
http
状态来使用相同的
route
,即(
get
post
)。但这将不可能有两个
GET
具有相同的
路由
@RithikBanerjee,这也是不可能的。请求可以在两个方法中映射一个方法?这是不可能的,但它可能用于HttpGet?不,这是不可能的。您可以有相同的
路由
和不同的
http
状态
,即。(
get
post
)。但这将不可能有两个
GET
具有相同的
路由
@RithikBanerjee,这也是不可能的。请求映射两种方法中的一种方法?如果请求有效负载是模型a,那么它应该使用参数a命中操作,如果请求有效负载是模型B,那么它应该使用参数B命中操作。可能吗?我不认为你可以用自定义对象来做。一种欺骗它的方法是,使用一个方法,然后根据有效负载进行委托。检查以下链接:-如果请求有效负载是模型A,那么它应该使用参数A执行操作,如果请求有效负载是模型B,那么它应该使用参数B执行操作。可能吗?我不认为你这样认为可以对自定义对象执行此操作。一种方法是,使用一个方法,然后根据负载进行委托。检查以下链接:-必须有某种或其他方式。不可能使用相同的动词。必须有某种或其他方式。不可能使用相同的动词