最終的に、リクエストを処理する前にリクエストを処理するwebmethodへの参照を取得しようとしています。PreRequestHandlerExecuteの中で、.asmxファイルのクラス名を確認してください
現在、プロジェクトの名前空間に要求パスを追加し、.asmx拡張子を削除し、スラッシュをドットで置き換えて作業しています。ただし、これは、クラスの名前空間階層が要求のパス階層と一致していることを前提としているため、必要な理由はありません。
ファイルを開いて解析するのに手間がかかりません - asmxファイルへのリクエストパスを指定すると、クラス内のクラスタイプまたはクラスタイプの名前への参照を取得できますか?
かなり新しい.NETになるので、私がやっていることはばかげているかもしれません。それは私のプロジェクトではありません、それはASP.NET 3.5とASMX Webサービス
EDIT
を使用するようにしてロックされています:目的はできるようにすることです。しかしいずれにせよ、私は答え:)EDITに興味があると思いますすべてのWebメソッドに認証コードを追加することなく、特定のWebサービスが認証されていないユーザーによって実行されないようにします。私の考えは、webmethodsでカスタム属性をパブリックとしてマークすることでした。認証されていないユーザーがカスタムHTTPモジュールやハンドラを実行できるようにするだけです。ユーザーのタイプはセッションに格納されます。
WebServiceParser.GetCompiledTypeをお寄せいただきありがとうございます。悲しいことに、私はあまりにもあなたを投票してくれる新しいユーザーです。元の質問を私が達成しようとしていることに関するより多くの情報で更新しました。あなたはクラスとコンテキストを与えられたWebメソッドそのものを解決する類似のものを知っていますか?それまでの間は、Request.PathInfo xor op get GETパラメータ –
を使用して解決します。安全な方法と安全でない方法を別々のasmxに分けることができれば、セキュリティを適用するほうがずっと簡単になると思います。 – VinayC
このアプローチの唯一の本当の利点は、EnforceSecurityメソッドを呼び出すことなくユーザーレベルのアクセスを要求するようにデフォルトの動作を設定できることです。私はもともと、デコレータコードを装飾されたメソッドの前および/または後で実行できるようにするために、Pythonのデコレータのように間違っていると仮定していたため、属性から始めました。 IISサーバーはWebファームモードで構成されていない可能性があり、ロードバランサは必ずしも同じユーザーからの連続した要求を同じIISサーバーに送信するわけではないため、組み込みの認証フレームワークは使用していません。 –