2014-03-24 3 views
0

를 찾을 수 없습니다 그러나C# WebApi2 동작이 나는이 작업이

System.Web.Http.Request;;;http://localhost:12345/api/Customers/Find?number=100 
System.Web.Http.Controllers;DefaultHttpControllerSelector;SelectController;Route='controller:Customer,action:Find' 
System.Web.Http.Controllers;DefaultHttpControllerSelector;SelectController;Customer 
System.Web.Http.Controllers;HttpControllerDescriptor;CreateController; 
System.Web.Http.Controllers;HttpControllerDescriptor;CreateController;CustomerController 
System.Web.Http.Controllers;CustomerController;ExecuteAsync; 
System.Web.Http.Action;ApiControllerActionSelector;SelectAction; 
System.Web.Http.Action;ApiControllerActionSelector;SelectAction; 
System.Web.Http.Controllers;CustomerController;ExecuteAsync; 
System.Net.Http.Formatting;DefaultContentNegotiator;Negotiate;Type='HttpError', 

을, 작업이 아니다 녹이다. 경로가 잘못 되었습니까?

+0

실제 오류는 무엇입니까? 트레이스에서 포맷터에서 오류가 발생하는 것처럼 보입니다. 그것은 라우팅 잘 작동하는 것 같습니다. –

+0

그냥 500 오류입니다. 코드가 동작에 도달하지 않기 때문에 예외가 throw되지 않습니다. 두 번째 줄 'System.Web.Http.Action; ApiControllerActionSelector; SelectAction;' 액션 이름을 포함하지 않으므로 액션을 선택하지 않았습니다. 작업을 선택하면 'System.Web.Http.Action; ApiControllerActionSelector; SelectAction; SelectedAction Find()'와 같은 줄이 표시됩니다. –

답변

0

"숫자"에 대한 세그먼트를 추가하고 컨트롤러 및 숫자에 대한 기본값을 정의합니다 (선택 사항으로 설정). 그렇다면 그것은 작동합니다.

예 :이 도움이

config.Routes.MapHttpRoute(
      name: "ApiByAction", 
      routeTemplate: "api/{controller}/{action}/{number}", 
      defaults: new { number = RouteParameter.Optional } 
     ); 

희망. 좋은 하루 보내십시오.

Alberto

+0

URL은 다음과 같습니다. http : // localhost : 12345/api/Customers/찾기? number = 100 –

0

문제가 해결되었습니다. 내 컨트롤러는 기본 컨트롤러에서 상속 받았으며이 기본 컨트롤러에는 Find라는 가상 메서드가 있어야하며 동일한 기본 동작 이름 특성을가집니다.

0

데이터 주석 처리 경로 상단을 사용할 수 있습니다.

하지만 OOP의 캡슐화와 충돌하여 권장되지 않습니다.

관련 문제