2011-04-18 8 views
0

안녕하세요 저는 현재 내 학교의 일종의 위키 시스템을 개발 중이며,이 시스템은 하위 도메인을 사용하여 위키가 속한 코스를 찾습니다. 예를 들어 math1.wiki.com은 수학 1 과정입니다. 이제 위키는 같은 데이터베이스를 사용하고 어떤 데이터를로드 할 지 찾기 위해 위키 ID가 주어집니다.동적 사이트, 글로벌 액세스 세션

위키 ID를 찾는 데 사용하는 코드는 다음과 같습니다. Global.asax에

protected void Session_Start() 
    { 
     var database = new DataContext(); 
     IWikiRepository rep = new WikiRepository(database); 
     IWikiService service = new WikiService(rep); 

     var domain = HttpContext.Current.Request.Url.Authority; 
     var port = ""; 
     if (domain.Contains(':')) 
     { 
      var tmp = domain.Split(':'); 
      domain = tmp[0]; 
      port = tmp[1]; 
     } 
     var split = domain.Split('.'); 
     var subdomain = split[0]; 

    // if (subdomain == "localhost") 
    //  subdomain = "wiki1"; 

     var wiki = service.GetSite(subdomain); 

     if (wiki == null) 
     { 
      Response.StatusCode = 404; 
      return; 
     } 

     Session["CurrentWiki"] = wiki; 
    } 

이 모든 괜찮지 만 난 더 위키는 하위 도메인을 찾을 수 없습니다 된 경우 MVC 시스템은 404 요청을 보낼 수 있도록합니다. 하지만 이것은 session_start()에서 한 번만 수행 할 수 있습니다. 세션 당 한 번 실행되므로 Application_BeginRequest를 사용하여 tryed하지만 슬프게도 메서드의 세션에 액세스 할 수 없습니다.

내가 어떻게 구현할 수 있는지 아는 사람이 있습니까?

답변

0

위젯이 있는지 확인하기 위해 메인 페이지의 시작 부분에서 호출하는 사용자 지정 함수를 만들 수 없습니까? 그렇지 않은 경우 redirect/error page/whatever. 커스텀 기능이라면, 필요할 때 호출 할 수 있습니다.

+0

사람이 링크를 사용하여 다른 컨트롤러로 직접 이동하면 어떻게됩니까? 그런 다음 사이트가 점검되지 않고 오류가 발생합니다. – Androme

관련 문제