我嘗試在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