Я реализую веб-API MVC в C#. Моя реализация Фрагмент кода: - WebApiConfig.csОшибка маршрутизации веб-API. Было найдено несколько действий, соответствующих запросу с разными путями API.
config.Routes.MapHttpRoute(
name: "getMultiProbe",
routeTemplate: "api/v1/{controller}/probe/{server}"
);
config.Routes.MapHttpRoute(
name: "getCurrentMultiProbe",
routeTemplate: "api/v1/{controller}/currentmultiprobe/{server}"
);
и контроллер, связанный с методами, которые создают проблемы являются: - 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;
}
от клиента покоя возвращают ошибку:
{"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()" }
Мне не пришлось бы соответствовать различным путям, потому что пути различаются по/currentmultiprobe и/probe. Я попытался изменить параметр ввода имени между путями и сервисом. Я спрашиваю, есть ли способ работать с этой конфигурацией.
ли это будет отображаться в любой другой контроллер? Если нет, то сузить область применения, используя значения по умолчанию. – Nkosi