Route Attributes를 사용하는 특정 컨트롤러에 대해서만 MessageHandler를 추가 할 수 있습니까?ASP.NET WebAPI 2에서 라우팅 속성을 사용하는 특정 컨트롤러에 MessageHandler를 추가하는 방법은 무엇입니까?
특정 헤더가 포함되어 있지 않으면 파이프 라인의 앞부분에서 요청을 자르고 싶습니다. 는 언급에 내가 원하는 :
내가 WebApiConfig 다른 경로를 추가 할 수 없습니다, 우리는 라우팅 컨트롤러에서 속성을 사용해야합니다.
전 세계적으로 MessageHandler를 추가하고 싶지 않습니다.
은 (초기 파이프 라인 단위)에 messageHandler 수 있습니다. 우리에게는 대안이 있지만 더 효율적으로하기 위해 노력하고 있습니다. API/myapicontroller 국도 ("")와 하나 개의 동작 :
예를 들어, 나는 다음과 같은 RoutePrefix와 컨트롤러를 장식했습니다. 그런 다음
(나는 이상한 알고, 우리가 쿼리 문자열에 따라 다른 행동을 선택하는 것), 나는 myMessageHandler가 실행 config.MapHttpAttributeRoutes();
전에이 코드를 넣으면 내가
config.Routes.MapHttpRoute(
name: "CustomRoute",
routeTemplate: "api/myapicontroller/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: null,
handler: new myMessageHandler()
);
추가했지만 나는이 메시지를 얻을 수 :
조치가 요청과 일치하는 컨트롤러의 myapicontroller '에서 찾을 수 없습니다
config.MapHttpAttributeRoutes();
을 먼저 넣으면 myMessageHandler가 실행되지 않지만 myapicontroller 내부의 my action이 호출됩니다.
[이 문서 (https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/http-message-handlers) 같지만 MapHttpRoute' '를 사용한다. 그러나 그것은 '속성 라우팅 (Attribute Routing)'을지지하지 않습니다. –