2016-05-17 4 views
1

J'essaye de créer un WebAPI simple dans ASP.NET. Je l'ai mis dans IIS. Lorsque je tente de naviguer sur le site, il est tout bon:WebAPI déployé sur IIS, donne 404 non trouvé

enter image description here

Mais lorsque je tente d'obtenir un résultat de l'API, je reçois cette erreur:

enter image description here

Controller:

public class ProductController : ApiController 
    { 
     Product[] products = new Product[] 
     { 
      new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, 
      new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, 
      new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } 
     }; 

     public IEnumerable<Product> GetAllProducts() 
     { 
      return products; 
     } 

     public IHttpActionResult GetProduct(int id) 
     { 
      var product = products.FirstOrDefault((p) => p.Id == id); 
      if (product == null) 
      { 
       return NotFound(); 
      } 
      return Ok(product); 
     } 
    } 

WebApiConfig:

public static void Register(HttpConfiguration config) 
     { 
      // Web API configuration and services 

      // Web API routes 
      config.MapHttpAttributeRoutes(); 

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

Répondre

2

Vous hébergez sur l'application accessible par /api, vous avez besoin d'un /api supplémentaire pour correspondre au routage:

http://localhost:6060/api/api/Product 

Si vous ne voulez pas que, alors soit donner au site api un nom plus sensible , supprimez le api/ de l'itinéraire, ou les deux.

+0

Je reçois toujours la même erreur – Pachu

+0

C'est parce que votre contrôleur s'appelle 'ProductController', au singulier, donc vous avez besoin de produit, pas de produits. – CodeCaster

+0

Je l'ai essayé mais quand même, j'obtiens le même résultat – Pachu