2013-04-17 1 views
1

J'ai ma route par défaut définie dans WebApiConfig.cs:Routage/Action brisé dans l'API Web

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

et dans mon contrôleur, j'ai une action:

// 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); 
    } 

Je sais que ce fut récemment travailler, mais maintenant je reçois l'infâme "Aucune action n'a été trouvée sur le contrôleur 'Les utilisateurs qui correspondent à la demande" erreur. Je n'arrive pas à comprendre ce qui (si quelque chose) a changé. J'ai défait tous mes changements depuis l'ajout des valeurs par défaut pour la page/offset et toujours rien.

des idées?

url demande: http://localhost/api/api/Users

+0

comment votre 'url' ressemble pour cette action? –

+0

@CuongLe http: // localhost/api/api/Users – earthling

Répondre

4

Ici, le paramètre 'id' est facultatif, mais le sélecteur d'action s'attend à lui spécifier une valeur par défaut dans l'action.

publique Get IEnumerable (string id = null, page int, int offset)

en ce qui concerne aussi l'URL, sans doute une faute de frappe, vous dire http://localhost/api/Users et non http://localhost/**api/api**/Users

+0

mise à jour de la route def à 'id =" "' 'au lieu de' id = RouteParameter.Optional' semble fonctionner de nouveau. Maintenant, j'ai besoin de voir ce qui a pu être cassé en conséquence. – earthling

0

Vous n'avez pas spécifié une action dans votre itinéraire. Vous devez soit ajouter une pièce {action} à votre URL, soit spécifier l'action dans votre objet default.

+0

Peu probable le cas comme indiqué inscription [default] (http://www.asp.net/web-api/overview/web-api-routing-and- actions/routage-dans-aspnet-web-api) un pour Web-API (notez 'MapHttpRoute' - pas le' MapRoute') –

+0

@AlexeiLevenkov: Vous avez encore besoin d'une action. L'itinéraire par défaut de WebAPI en contient également un. –

+0

Il n'y a jamais eu d'action sur la route. C'est la configuration par défaut du projet mvc 4 web api. – earthling