2011-04-18 80 views
0

您好,我目前正在为我的学校开发一种wiki系统,该系统使用子域来查找wiki所属的课程。示例math1.wiki.com将成为数学1课程。 现在,所有这些wiki都使用相同的数据库并提供wiki ID,以查找要加载的数据。动态网站,全球访问会话

这里是我用来查找wiki 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尝试过,但可惜我没有访问方法中的会话。

做任何人知道我可以如何实现这个?

回答

0

为什么不能在主页开始时调用一个自定义函数来确定wiki是否存在,如果不存在,重定向/错误页面/其他。如果它是一个自定义函数,您可以在必要时重新调用它。

+0

如果此人使用链接并直接转到其他控制器会怎么样?然后,该网站不会被检查,并打开错误! – Androme 2011-04-18 14:00:39