Pourquoi ne peut pas naviguer à l'api web de contrôleur

- Je utiliser l'API Web pour la première fois à connecter mon application mobile de l'API Web.

J'ai MVC 5 projet et j'ai créé le dossier API et à l'intérieur j'ai créé ProductsController.

namespace DDD.WebUI.API
{
    public class ProductsController : ApiController
    {
        public string GetAllProducts()
        {
            return "Hello From WebAPI";
        }

    }
}

Et j'ai essayé d'accéder à cette méthode de navigateur:

http://localhost:21879/DDD.WebUI/API/products/GetAllProducts

Mais je reçois 404.

C'est probablement quelque chose de stupide, mais ne peut pas le comprendre 🙁

Mise à JOUR

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
               name: "DefaultApi",
               url: "API/{controller}/{action}/{id}",
               defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
           );

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );



        }

Mise à JOUR 2

J'ai un peu de progrès:
Je l'ai mise à jour Application_Start() avec:

GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);

Dans WebApiConfig j'ai:

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

J'ai toujours stocker API contrôleur dans un Projet/Api/contrôleur produits
Mais maintenant, je peux y accéder mais ne peut toujours pas obtenir la valeur:

http://localhost:21879/api/products/getallproducts

Mais l'erreur que j'obtiens est:

<Error>
<Message>The request is invalid.</Message>
<MessageDetail>
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.String Get(Int32)' in 'GSL.WebUI.Api.ProductsController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
</MessageDetail>
</Error>
Pour répondre à votre mise à jour. Si vous définissez la cartographie de cette façon, vous ne devez pas utiliser l'action dans l'url. Essayez http://localhost:21879/api/products/ et cela devrait fonctionner. Ensuite, voir le lien dans ma réponse à comprendre comment tout fonctionne ensemble.
essayez cette url .. localhost:21879/API/produits/GetAllProducts/2

OriginalL'auteur 1110 | 2014-08-25