Поэтому у меня есть 2 контроллера:Как установить действие по умолчанию для контроллера?
[AllowCrossSiteJson]
public class ItemController : ApiController {
[HttpGet]
public LinkedList<Object> FindItem([FromUri]ItemQuery query) {
....
}
}
И
[AllowCrossSiteJson]
public class SubDepController : ApiController
{
[HttpGet]
public LinkedList<Object> FindSubDep(string ID) {
....
}
}
Вот вещь, я стараюсь называть как:
http://localhost:43751/api/SubDep
http://localhost:43751/api/Item
И Позиционный регулятор работает, но SubDep делает не работа! Почему это?
Вот мой WebApiConfig:
public static void Register(HttpConfiguration config) {
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "withAction",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
Я получаю ошибку назад это:
{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:43751/api/SubDep'.","MessageDetail":"No action was found on the controller 'SubDep' that matches the request."}
БОНУС вопрос:
Как ASP.NET MVC знаю, что я попытаться получить:
http://localhost:43751/api/Item
Он автоматически переходит на действие FindItem? Это как чистый МАГИЯ для меня !!
Вы абсолютно правы, это причина. Я сделал параметр необязательным, и он вызывает функцию правильно. – Bill