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
essayez cette url .. localhost:21879/API/produits/GetAllProducts/2
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
Vous devez vous connecter pour publier un commentaire.
Je pense en regardant de mettre à jour votre action nécessite
id
qui est de la non nullableint
et vous n'êtes pas fournir tout juste de modifier l'url dehttp://localhost:21879/API/products/GetAllProducts/2
ici'2'
est attribué à'id'
et il va fonctionner.Dans WebApiConfig modifier l'itinéraire :
Il suffit de changer cette Mvc Route :
:
parce que sinon Mvc et de l'Api des itinéraires de conflit les uns avec les autres...
GSL.WebUI.Controllers
mise à jour de réponse..
Il ne fonctionne pas encore. Pourquoi j'ai besoin de Vue de l'API?
avez coché routeconfig???
J'ai mis à jour la question avec la route de configs.
OriginalL'auteur Kartikeya Khosla
J'ai eu le même problème. Montre l'ordre dans lequel vous enregistrez vos itinéraires Mondiale.asax.cs.
Cela fonctionne:
Ce n'est pas le cas:
Merci, ça a fonctionné pour moi 🙂
merci homme. L'ordre des questions
OriginalL'auteur Kevin
Si vous utilisez ce mode de routage, vous devez spécifier le permis Http méthodes de l'action:
Vous pouvez obtenir toutes les informations au sujet de l'API de routage à partir de ce lien: http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api
OriginalL'auteur Tallmaris