2011-03-16 4 views
0

하나의 asmx에 많은 webmethod가 있습니다. 이 웹 메소드가 호출되기 전에 라이센스 검사를 수행해야합니다.ASP.NET 웹 서비스 : 웹 메서드가 호출되기 전에 사용자 지정 코드를 실행하는 방법?

if (!AllRight()) 
{ 
    // badRequest 
    return; 
} 

을 아니면 내가 URL에서의 WebMethod를 감지하는 HttpModule의 복잡한 필터를 삽입 할 수 있습니다 : 나는 검사를 필요로 각 웹 메소드에 다음 코드를 삽입 할 수 있습니다. webmethod에 대한 속성과 처리 할 수있는 장소와 같은 속성이 필요합니다. 꽤 좋은 해결책이 있습니까?

답변

1

IMO 두 가지 옵션이 모두 유용합니다. HttpModule을 사용하는 것은 좋은 접근법입니다. url을 구문 분석하여 웹 서비스 호출을 감지하는 것은 매우 간단합니다. 즉, 특정 asmx (및 WSDL 요청 처리)를 찾고 있습니다. 선택적인 라이센스 검사를 원할 경우 URL에서 간단한 메소드 이름 스니핑을 수행하십시오 (속성이있는 메소드를 꾸미는 것과 반대 됨).

는 별도로 위의 옵션에서, 당신은 대안

  1. 의 부부 라이센스 방법을 장식하는 속성을 사용하여 코드를 확인 주입 (예를 들어, PostSharp) 일부 Aspect Oriented Programming 프레임 워크를 사용합니다.

  2. 핸들러 수준에서 수행하십시오. 기본적으로 IHttpHandlerFactory를 구현하고 asmx 끝점에 사용합니다. 구현은 WebServiceHandlerFactory (또는 ajax의 경우 ScriptHandlerFactory)을 감싸고 기본 처리기에서 제공하는 처리기 객체를 감싸는 처리기를 반환합니다. 그러나 솔직히 말해서, 이것은 취성있는 솔루션이며 HttpModule과 본질적으로 동일하지만 더 복잡합니다.

관련 문제