1
ASP.Net 웹 API에서 "콘텐츠 기반 라우팅"을 수행하는 방법은 무엇입니까? WCF (WCF Content based routing)ASP.Net 웹 API : 콘텐츠 기반 라우팅
ASP.Net 웹 API에서 "콘텐츠 기반 라우팅"을 수행하는 방법은 무엇입니까? WCF (WCF Content based routing)ASP.Net 웹 API : 콘텐츠 기반 라우팅
요청의 내용을 검사하고 사용할 리플렉션을 사용하여 ApiControllerActionSelector 클래스의 SelectAction 메서드를 재정의하면됩니다. 그런 다음, 현재 컨트롤러 컨텍스트를 전달하는 ReflectedHttpActionDescriptor의 인스턴스와 반영된 동작 메서드의 MethodInfo를 반환하면됩니다. 일치하는 메소드가 없으면 base를 호출하고 그 결과를 리턴하십시오.
샘플은 여기에서 찾을 수 있습니다. https://stackoverflow.com/a/16545954/1402786
나는 이런 일이 일어나는 것을 보지 못했습니다. WebApi는 인바운드 스트림을 두 번 이상 읽을 수 없기 때문에 보내는 페이로드를 실제로 "검사하지"않는 방식으로 구성됩니다. 왜 당신은 컨트롤러 자체 내에서 그것을 처리 할 전략이나 무언가를 갖고 있지 않습니까? 전송되는 페이로드를 기반으로 여러 엔드 포인트를 스캔해야하는 경우가 이상합니다. – Chris
이것이 좋은 기능이라고 생각합니다. 라우팅은 클라이언트가 제공 한 Content-Type 헤더의 내용을 기반으로합니다 (라우팅은 이미 다른 http 헤더 인 http 동사를 기반으로 수행되는 것과 유사합니다). 하나의 사이드 로테 @ 크리스 - 동일한 페이로드를 여러 번 읽기가 쉽지만, 단지 스트림 일뿐입니다. 완료되면 request.InputStream.Seek (0, SeekOrigin.Begin)을 수행하는 것을 기억해야합니다. – gardarh