2011-10-28 2 views
0

안녕하세요, 저는 매우 멍청한 질문을했습니다. 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 요청에 대해 실행됩니다. 이는 favicon (브라우저 URL에 표시되며 사용자가없는 경우에도 요청되는 경우도 있음)이나 이미지, 외부 .css, 외부 .js 파일 등 (ASP.NET 스택을 우회하는 IIS가 직접 제공하지 않는 한). 모듈에있는 모든 URL을 고려해야합니다.

배포 환경을 얼마나 엄격하게 제어 하느냐에 따라 IIS가 단순히 직접 제공하도록함으로써 특정 파일 확장명을 asp.net에서 모두 제외시킬 수 있습니다. http://msdn.microsoft.com/en-us/library/ms972953.aspx

+0

안녕하세요. 의견을 보내 주셔서 감사합니다. 다음 올바른 URL을 얻을 수있는 솔루션을 가지고? 예를 들어 ~/모듈/관리자/역할/RoleManagementList.aspx.Or 같은 URL을 얻으려면 또는 Maybe HTTP 모듈의 다른 단계에서 할 수있는 preInt 또는 다른? – user998405

+0

잘못된 생각으로 생각하고 있습니다. 요청 URL을 받게됩니다. 다른 URL을 "얻을 수"없습니다. 당신은 주어진 URL에 어떻게 반응할지 결정해야합니다. 따라서 요구 사항에 따라 예를 들어 .aspx로 끝나지 않는 URL을 단순히 통과하도록 결정할 수 있습니다. 아니면 단순히 ".ico"로 끝나는 URL이나 무엇이든간에 전달하기로 결정할 수 있습니다. 오직 당신 만이 당신이 그들에게 어떻게 반응하고 싶은지 결정할 수 있습니다. – Nathan

+0

확인. 고마워. – user998405