I'm implementing web API MVC in c#. My snippet implementation is: - WebApiConfig.cs
config.Routes.MapHttpRoute( name: "getMultiProbe", routeTemplate: "api/v1/{controller}/probe/{server}" ); config.Routes.MapHttpRoute( name: "getCurrentMultiProbe", routeTemplate: "api/v1/{controller}/currentmultiprobe/{server}" ); And controller associated with the methods that generate the issue are: - HistController.cs
[HttpPost] public Dictionary<string, List<DataSample>> getMultiProbe(string server, [FromBody] Dictionary<string,Object> request) { Debug.WriteLine("ENTER [GetMultiProbe] "+ request["from"] + " - mode: " + request["mode"]); string[] tagnames = (string [])request["tagnames"]; return null; } [HttpPost] public Dictionary<string, Object[]> getCurrentMultiProbe(string server, [FromBody] String[] tagnames) { Debug.WriteLine("ENTER [getCurrentMultiProbe] server: " + server + " - tagnames: " + tagnames); return null; } from rest client return the error:
{"Message": "An error has occurred.","ExceptionMessage": "Multiple actions were found that match the request: getMultiProbe on type HistService.Controllers.HistController getCurrentMultiProbe on type HistService.Controllers.HistController", "ExceptionType": "System.InvalidOperationException", "StackTrace": " at System.Web.Http.Controllers.ApiControllerActionSelector.ActionSelectorCacheItem.SelectAction(HttpControllerContext controllerContext) at System.Web.Http.Controllers.ApiControllerActionSelector.SelectAction(HttpControllerContext controllerContext) at System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken) at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext()" }
I wouldn't have to match the different paths, because the paths differ on /currentmultiprobe and /probe. I tried to change the name input parameter between paths and the service works. I ask if there is a way to work this configuration.