![](/img/trans.png)
[英]Adding an explicit action route to ASP.NET Web API Controller
[英]Post Action method overload with same route name in ASP.Net Web API Controller
是否可以有两个具有相同路由名称和相同方法但参数不同的操作? 我试过这个:
[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()"}
无法获取与 http 相同的方法类型获取多种方法。 你应该有不同的路线
只能使用不同的 HTTP 动词。 否则,您必须定义不同的路线。
不可能有许多具有相同路线和相同 HTTP 动词的动作。
您可以做的是有一个接受基本 class 和自定义解析器的操作。
例如:
public abstract class RequestPayload
{
}
public class RequestPayloadWithoutSign : RequestPayload
{
}
public class RequestPayloadWithSign : RequestPayload
{
public string Sign { get; set; }
}
以及连接到 JSON 解串器的定制 JSON 解析器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.