2011-10-28 22 views
0

こんにちは、私は質問するために非常にnoob質問を得た。私はアクセス権を行うためにhttpモジュールを使用しています。ユーザーが 'admin'であれば、ページを表示する権限を持っているとしましょう.HTTPモジュールは、ページURLに基​​づいてデータベースからアクセス権を取得します。その後、httpモジュールはユーザーにアクセスが許可されているかどうかを判断します。httpモジュールが正しいページURLを取得できない

は、ここに私のサンプルコーディングです:

public void Init(HttpApplication context) 
    { 
     context.AcquireRequestState += new EventHandler(context_AcquireRequestState1); 

    } 



    void context_AcquireRequestState1(object sender, EventArgs e) 
    { 
     try 
     { 

      string requestUrl = application.Request.AppRelativeCurrentExecutionFilePath.ToString().Trim(); 
      //return last string of .aspx 
     string requestAspx = requestUrl.Substring(requestUrl.LastIndexOf('/') + 1).Trim(); 

    } 

が、HttpModuleをはいくつかの時間を実行します。 URLを正しく取得できません。 たとえば、〜/ Module/Admin/Role/RoleManagementList.aspxが初めて取得されることがあります。 二度目は間違ったURLを取得します〜/ favicon.ico誰も私はこの問題を解決することができますか?どうもありがとうございます

答えて

0

あなたは「間違った」URLを取得していません。ユーザーのブラウザは、単に別のリソースを要求しています。 httpモジュールはhttpリクエストごとに実行されます。これはファビコン(ブラウザのURLに表示され、場合によってはリクエストされていない場合でも要求されることがあります)やイメージ、外部.css、外部の.jsファイルなど(ページがASP.NETスタックをバイパスしてIISによって直接処理されない限り)。これらのURLをすべてモジュール内で検討する必要があります。

デプロイメント環境をどれくらい厳密に管理するかに応じて、IISが直接それらを直接提供するだけで、特定のファイル拡張子をasp.netのすべてのヒットから除外することもできます。 http://msdn.microsoft.com/en-us/library/ms972953.aspx

+0

ご意見ありがとうございます。正しいHTTP URLを取得するための解決策が得られましたか?たとえば、〜/ Module/Admin/Role/RoleManagementList.aspxなどのURLを取得したいと思いますか、またはmaybがhttpモジュールの別のステップで行うことができますか? – user998405

+0

あなたはそれを間違った方法で考えています。あなたは要求のURLを与えられます - あなたは異なったURLを "得る"ことができません。あなたは、あなたが与えられたURLにどのように反応するかを決める必要があります。したがって、要件に応じて、たとえば、.aspxで終わらないURLを単純に渡すことにします。または単に「.ico」などで終わるURLを渡すこともできます。あなただけがあなたにどのように反応したいかを決めることができます。 – Nathan

+0

ありがとうございました – user998405

関連する問題