WebAPI部署到IIS,给404未发现
问题描述:
我想在ASP.NET中创建一个简单的WebAPI。我把它放在IIS中。当我尝试浏览该网站这一切都很好:WebAPI部署到IIS,给404未发现
但是,当我试图了解从API的结果,我得到这个错误:
控制器:
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 }
);
}
答
你主持它由/api
访问的应用程序,所以你需要一个额外的/api
相匹配的路由:
http://localhost:6060/api/api/Product
如果你不希望出现这种情况,那么要么给api
网站一个更明智的名字,从路线中删除api/
或两者。
我仍然得到相同的错误 – Pachu
这是因为你的控制器被称为'ProductController',单数,所以你需要产品,而不是产品。 – CodeCaster
我试了一下,但还是得到了相同的结果 – Pachu