2011-10-28 19 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(); 

    } 

但HTTP模塊將運行幾個時間。它無法正確地獲得網址。 例如第一次可能會得到〜/ Module/Admin/Role/RoleManagementList.aspx。 然後第二次會得到錯誤的網址〜/ favicon.ico.任何人都可以幫我解決這個問題嗎?非常感謝你

回答

0

你沒有得到「錯誤」的網址。用戶的瀏覽器只是針對不同的資源提出不同的請求。您的http模塊將針對每個http請求執行,除了「favicon」(顯示在瀏覽器url中,有時甚至沒有用戶請求)或「images」外的每個資源.css,外部.js文件等等(除非它們是由IIS繞過ASP.NET堆棧直接提供的)。您需要考慮模塊中的所有這些URL。

根據你控制你的部署環境的緊密程度,你也可以通過IIS直接爲它們提供服務,從而可以免除每個打到asp.net的文件擴展名。見http://msdn.microsoft.com/en-us/library/ms972953.aspx

+0

嗨,謝謝你的評論。然後得到任何解決方案,以獲得正確的http url?例如,我想要的URL如〜/ Module/Admin/Role/RoleManagementList.aspx.Or mayb可以做另一個http模塊的步驟?如preInt或其他? – user998405

+0

你在錯誤地思考它。您將獲得請求的網址 - 您無法「獲取」不同的網址。您將不得不決定如何對您給出的網址做出反應。因此,根據您的要求,您可能會決定,例如,您只需傳遞不以.aspx結尾的任何網址。或者你可能只是決定通過以「.ico」或其他方式結尾的網址。只有你可以決定你想如何對他們作出反應。 – Nathan

+0

好的。非常感謝你 – user998405