2014-02-14 3 views
1

솔루션 (ASP.Net MVC, 도메인, 데이터베이스, 엔티티 및 Telerik Report Server WebApi)에서 다양한 프로젝트가 있습니다. /api 대신 컨트롤러가있는 컨트롤러/컨트롤러

ASP.Net MVC

는 호스트에서 호스팅/호스트 명/ReportServer로/

모두에서 보고서 서버는 보고서 서버를 제외하고 잘 작동합니다.

그것은 동일한 설정으로 이론적으로

/ReportServer/Controllers/ReportsController 

대신

난 그냥 ASP.Net MVC 및 ReportServer로 간단한 테스트 솔루션을 만들었습니다
/ReportServer/api/ReportsController 

에서 ReportsController API를 배치합니다. 이 작동하지만,이 원인을 볼 수 없습니다. 모든 라우팅, 기본 클래스 등은 동일합니다.

아이디어가 있으십니까?

답변

1

폴더 구조/이름은 ASP.Net 웹 API 라우팅의 경우에는 중요하지 않습니다.

'컨트롤러'폴더 또는 'API'폴더에 넣지 않아도됩니다. WebAPI.config 파일에서 라우팅 구성을 확인한 경우 기본 경로 템플리트는 'api/{controller}/{id}'과 같으며 이로 인해 API 경로가 작동합니다.

config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}", // <-- 
       defaults: new { id = RouteParameter.Optional } 
      ); 
+0

위의 등록 기능의 "ReportServer로는 /"부분을 생략 할 수 있습니다 ReportApp 프로젝트에 대한 WebAPI.config의 기본 경로 템플릿은 말하고 api /를 가리키며 찾고있는 곳이지만 컨트롤러는 컨트롤러 슬래시에 있습니다 (IIS의 컨트롤러 폴더에있는 컨트롤러를 볼 수 있습니다. 디렉토리 브라우징을 켜기). – Chris

2

대신 경로 등록 기능 (ReportsControllerConfiguration.RegisterRoutes를)보고 기본 Telerik를 호출, 당신은 당신의 자신의 경로 등록 절차를 쓸 수 및합니다 (DefaultApi 경로 전에) WebApiConfig.Register에서 호출. 예를 들어 :

private static void RegisterReportingRoutes(HttpConfiguration config) 
    { 
     config.Routes.MapHttpRoute(name: "Clients", 
     routeTemplate: "ReportServer/Controllers/{controller}/clients/{clientID}", 
     defaults: new { controller = "MyCustomReports", action = "Clients", clientID = RouteParameter.Optional }); 

     config.Routes.MapHttpRoute(
      name: "Instances", 
      routeTemplate: "ReportServer/Controllers/{controller}/clients/{clientID}/instances/{instanceID}", 
      defaults: new { controller = "MyCustomReports", action = "Instances", instanceID = RouteParameter.Optional }); 

     config.Routes.MapHttpRoute(
      name: "DocumentResources", 
      routeTemplate: "ReportServer/Controllers/{controller}/clients/{clientID}/instances/{instanceID}/documents/{documentID}/resources/{resourceID}", 
      defaults: new { controller = "MyCustomReports", action = "DocumentResources" }); 

     config.Routes.MapHttpRoute(
      name: "DocumentActions", 
      routeTemplate: "ReportServer/Controllers/{controller}/clients/{clientID}/instances/{instanceID}/documents/{documentID}/actions/{actionID}", 
      defaults: new { controller = "MyCustomReports", action = "DocumentActions" }); 

     config.Routes.MapHttpRoute(
      name: "DocumentPages", 
      routeTemplate: "ReportServer/Controllers/{controller}/clients/{clientID}/instances/{instanceID}/documents/{documentID}/pages/{pageNumber}", 
      defaults: new { controller = "MyCustomReports", action = "DocumentPages" }); 

     config.Routes.MapHttpRoute(
      name: "DocumentInfo", 
      routeTemplate: "ReportServer/Controllers/{controller}/clients/{clientID}/instances/{instanceID}/documents/{documentID}/info", 
      defaults: new { controller = "MyCustomReports", action = "DocumentInfo" }); 

     config.Routes.MapHttpRoute(
      name: "Documents", 
      routeTemplate: "ReportServer/Controllers/{controller}/clients/{clientID}/instances/{instanceID}/documents/{documentID}", 
      defaults: new { controller = "MyCustomReports", action = "Documents", documentID = RouteParameter.Optional }); 

     config.Routes.MapHttpRoute(
      name: "Parameters", 
      routeTemplate: "ReportServer/Controllers/{controller}/clients/{clientID}/parameters", 
      defaults: new { controller = "MyCustomReports", action = "Parameters" }); 

     config.Routes.MapHttpRoute(
      name: "Formats", 
      routeTemplate: "ReportServer/Controllers/{controller}/clients/{clientID}/formats", 
      defaults: new { controller = "MyCustomReports", action = "Formats" }); 
     config.Routes.MapHttpRoute(name: "EditingAndLayout", routeTemplate: "ReportServer/Controllers/{controller}/formats", defaults: new { controller = "MyCustomReports", action = "Formats" }); 
    } 

은/ReportServer를 경로 대신 "/"응용 프로그램에서 경로의 자체 웹 응용 프로그램입니다 경우에, 당신은

+0

@bfhand 수정 됨. 주의 투표를 제거하기 위해 –

+0

미안하지만 내 투표가 아니야. – b4hand

+0

덕분에 도움이되었습니다. –

관련 문제