2016-05-17 139 views
1

我想在ASP.NET中创建一个简单的WebAPI。我把它放在IIS中。当我尝试浏览该网站这一切都很好:WebAPI部署到IIS,给404未发现

enter image description here

但是,当我试图了解从API的结果,我得到这个错误:

enter image description here

控制器:

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

回答

2

你主持它由/api访问的应用程序,所以你需要一个额外的/api相匹配的路由:

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

如果你不希望出现这种情况,那么要么给api网站一个更明智的名字,从路线中删除api/或两者。

+0

我仍然得到相同的错误 – Pachu

+0

这是因为你的控制器被称为'ProductController',单数,所以你需要产品,而不是产品。 – CodeCaster

+0

我试了一下,但还是得到了相同的结果 – Pachu