궁극적으로 요청을 처리하기 전에 요청을 처리 할 webmethod에 대한 참조를 얻으려는 중입니다. 요청을 처리하기 전에 사용자 지정 속성을 검사합니다.PreRequestHandlerExecute 내에서 .asmx 파일의 클래스 이름을 확인하십시오.
현재 프로젝트 네임 스페이스에 요청 경로를 추가하고 .asmx 확장명을 제거하고 슬래시를 점으로 바꾸는 방법으로 작업하고 있습니다. 그러나 이것은 클래스 네임 스페이스 계층 구조가 요청 경로 계층 구조와 일치한다고 가정하므로 필요하지 않습니다.
파일을 열고 파싱하는 것보다는 짧습니다. asmx 파일에 대한 요청 경로가 있으면 클래스 유형 또는 클래스 유형 이름에 대한 참조를 검색 할 수 있습니까?
.NET에 익숙해 져서 내가하고있는 일이 바보 같을 수도 있습니다. 그것은 내 프로젝트 아니다, 그것은 ASP.NET 3.5 및 ASMX 웹 서비스
편집
를 사용하기에 잠겨 : 목표는 할 수있다 그러나 어느 쪽이든, 난 답 :편집에 관심이있을 것 모든 웹 메소드에 인증 코드를 추가하지 않고 특정 웹 서비스가 인증되지 않은 사용자에 의해 실행되는 것을 방지합니다. 내 생각은 webmethods에 대한 사용자 지정 특성을 public으로 표시하는 것으로, 사용자 지정 HTTP 모듈이나 처리기가 인증되지 않은 사용자에 의해 실행되도록 허용하는 것입니다. 사용자 유형이 세션에 저장됩니다.
WebServiceParser.GetCompiledType을 주셔서 감사합니다.이 과정에서 하나의 불쾌한 단계를 밟았습니다. 슬프게도 나는 당신을 투표하기에는 너무 새로운 사용자입니다. 나는 원래의 질문을 달성하려는 것에 대한 더 많은 정보로 업데이트했다. 클래스와 컨텍스트가 주어진 웹 메서드 자체를 해결할 비슷한 비슷한 것을 알고 있습니까? 그 동안에는 Request.PathInfo xor 또는 op GET 매개 변수 –
을 사용하여 해결할 것입니다. @ 답변에서 편집을 참조하십시오. 보안 및 비보안 방법을 다른 asmx로 분리 할 수 있다면 보안 적용이 훨씬 간단해질 수 있다고 생각합니다. – VinayC
이 접근법의 유일한 장점은 EnforceSecurity 메서드를 호출 할 필요없이 사용자 수준의 액세스가 필요한 기본 동작을 가질 수 있으므로 사용자가 제안한대로 할 수 있다는 것입니다. 원래 속성으로 시작했는데 데코레이터 코드가 데코 레이팅 된 메서드 앞이나 뒤에 실행될 수 있도록 파이썬 데코레이터와 같다고 잘못 생각했습니다. IIS 서버가 웹 팜 모드에서 구성되지 않을 수 있으며로드 밸런서가 동일한 사용자의 동일한 요청을 동일한 IIS 서버로 보낼 필요가 없기 때문에 inbuilt 인증 프레임 워크를 사용하지 않습니다. –