我尝试在ASP.NET MVC4应用程序中使用Web Api。ASP.NET Web Api url设计
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "ActionIdApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
public class OrganisationApiController : ApiController
{
public List<Direction> GetDirections()
{
List<Direction> res = new List<Direction>();
using (SerializerContext context = new SerializerContext())
{
res = context.DirectionSet.ToList();
}
return res;
}
public List<Departement> GetDepartements(int directionId)
{
List<Departement> res = new List<Departement>();
using (SerializerContext context = new SerializerContext())
{
res = context.DepartementSet.Where(d => d.IdDirection == directionId).ToList();
}
return res;
}
}
应用与
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
开始当我开发我可以打电话给我所有的方法从OrganisationApiController: http://localhost:5000/api/OrganisationApi
=> GetDirections被称为 http://localhost:5000/api/OrganisationApi/GetDirections
=> GetDirections被称为 http://localhost:5000/api/OrganisationApi/GetDepartements/1
=> GetDepartement被称为与directionId = 1
但是,当我部署在服务器与IIS http://myserver.com:5000/api/OrganisationApi
=> GetDirections被称为 http://myserver.com:5000/api/OrganisationApi/GetDirections
=> GetDirections被称为 http://myserver.com:5000/api/OrganisationApi/GetDepartements/1
=> 404错误
什么我失踪?
如果您使用的Web API 2,看看新的,有光泽的属性路线。你可以用'[RoutePrefix(“api/organization”)]'来表示你的控制器,然后用'[Route(“”)]'表示你的行为(路径简单地是'api/organization')或'[Route(“{id}”]'等 – Alxandr 2014-09-11 07:18:19
不幸的是我不能使用Web Api 2! – 2014-09-11 08:35:33
看看[AttributeRouting](http://attributerouting.net/#asp-net-web-api)包,你应该能够使用WebApi 1。 – Tom 2014-09-11 11:25:24