Я разрабатываю ASP.NET MVC 4 Web Api с С# и.NET Framework 4.0.
У меня проблемы с этим контроллером:
public class ASManagementController : ApiController
{
private readonly IExceptionLogHelper m_ExceptionLoggerHelper;
public ASManagementController(IExceptionLogHelper exceptionLoggerHelper)
{
m_ExceptionLoggerHelper = exceptionLoggerHelper;
}
[HttpGet]
public HttpResponseMessage IsConnected()
{
[ ... ]
}
[HttpPut]
public HttpResponseMessage DoConnect()
{
[ ... ]
}
[HttpPut]
public HttpResponseMessage DoReset()
{
[ ... ]
}
}
Это мой класс WebApiConfig
:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// More routes...
config.Routes.MapHttpRoute(
name: "ASActionApi",
routeTemplate: "api/asManagement/{action}",
defaults: new { controller = "ASManagement" });
}
}
Когда я делаю https://localhost:44300/api/asManagement/DoConnect
я получаю следующую ошибку:
Multiple actions were found that match the request:
"ExceptionMessage":
"System.Net.Http.HttpResponseMessage DoConnect() in type MyPtoject.Web.Api.Controllers.ASManagementController
System.Net.Http.HttpResponseMessage DoReset() in type MyPtoject.Web.Api.Controllers.ASManagementController",
"ExceptionType":"System.InvalidOperationException"
Как я могу исправить эту ошибку?
Если я doConnect
метод doConnect
на ASManagementController
он будет работать. Ты знаешь почему?
Не очень чистое решение - переместить ASActionApi
defintion перед DefaultApi
WebApiConfig
классе WebApiConfig
.
Попробуйте поставить ASActionApi перед DefaultApi.
Входящие URL-адреса сравниваются с маркерами маршрутов в том порядке, в котором посетители появляются в словаре маршрутов (это то, к чему мы добавили карты маршрутов в наш файл RouteConfig.cs). Первый маршрут, который успешно сопоставляет параметры контроллера, действия и действия с параметрами в URL-адресе или значениями по умолчанию, определенными как часть карты маршрута, вызывается в указанный контроллер и действие.
WebApiConfig
и doConnect
метод doConnect
в ASManagementController
он работает.