2013-04-17 4 views
1

Я мой маршрут по умолчанию определяется в WebApiConfig.cs:Разбитое Routing/Действие в Web API

 config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional, page = 20, offset = 0 } 
     ); 

и в мой контроллер, у меня есть действие:

// GET api/users 
    [HttpGet] 
    public IEnumerable<User> Get(string id, int page, int offset) 
    { 
     return id != null 
      ? new User[]{Get(id)} 
      : _userService.All().Skip(offset*page).Take(page); 
    } 

Я знаю, это было недавно но теперь я получаю печально известное «Никакое действие не найдено на контроллере« Пользователи », который соответствует ошибке« запрос ». Кажется, я не могу понять, что (если что-либо) изменилось. Я отменил все мои изменения с момента добавления значений по умолчанию для страницы/смещения и до сих пор ничего.

любые идеи?

запрос URL: http://localhost/api/api/Users

+0

как ваш 'url' выглядит для этого действия? –

+0

@CuongLe http: // localhost/api/api/Пользователи – earthling

ответ

4

Здесь параметр 'id' является необязательным, но селектор действий рассчитывает указать для него значение по умолчанию для действия.

общественного IEnumerable Get (строка идентификатор = NULL, внутр страницы, внутр смещение)

относительно также URL, вероятно, опечатка, вы имеете в виду http://localhost/api/Users и не http://localhost/**api/api**/Users

+0

обновление маршрута def до 'id =" "' вместо 'id = RouteParameter.Optional', похоже, заставляет его работать снова. Теперь мне нужно увидеть, что может сломаться в результате. – earthling

0

Вы не указали Действие в вашем маршруте. Вам нужно либо добавить {action} в свой URL, либо указать действие в вашем объекте default.

+0

Маловероятно, что в случае показанной регистрации [по умолчанию] (http://www.asp.net/web-api/overview/web-api-routing-and- action/routing-in-aspnet-web-api) для Web-API (уведомление «MapHttpRoute' - не« MapRoute ») –

+0

@AlexeiLevenkov: Вам все еще нужно действие. Путь по умолчанию для WebAPI также содержит один. –

+0

На маршруте никогда не было действий. Это по умолчанию настроено проектом mvc 4 web api. – earthling

Смежные вопросы