ASP.NET MVC4 응용 프로그램에서 Web API를 사용하려고합니다. 이 =라고 http://localhost:5000/api/OrganisationApi/GetDirections
=> GetDirections라고합니다> GetDirections http://localhost:5000/api/OrganisationApi/GetDepartements/1
=> GetDepartement가 호출 http://localhost:5000/api/OrganisationApi
: 나는 OrganisationApiController에서 내 모든 메소드를 호출 할 수 개발할 때ASP.NET 웹 API 디자인
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);
}
시작 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 오류
내가 무엇을 놓치고라고 라고?
당신이 웹 API (2)를 사용하는 경우, 새로운 반짝 속성 라우팅을 살펴. 컨트롤러를'[RoutePrefix ("api/organization")]'와 같이 표시 한 다음'[Route ("")]'(단순히 경로가 api/organization 일 때) – Alxandr
불행히도 Web API 2를 사용할 수 없습니다! –
[AttributeRouting] (http://attributerouting.net/#asp-net-web-api) 패키지를 확인하십시오. WebApi 1에서이를 사용할 수 있어야합니다. – Tom