Session 动态站点,全局中的访问会话

Session 动态站点,全局中的访问会话,session,asp.net-mvc-3,global-asax,Session,Asp.net Mvc 3,Global Asax,您好,我目前正在为我的学校开发一种wiki系统,该系统使用子域查找wiki所属的课程。示例math1.wiki.com将是数学1课程。 现在,所有这些wiki都使用相同的数据库,并被赋予wiki id,以查找要加载的数据 下面是我用来查找wiki id的代码。 Global.asax protected void Session_Start() { var database = new DataContext(); IWikiRepository

您好,我目前正在为我的学校开发一种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;
    }
这很好,但是如果没有找到子域的wiki,我想让mvc系统发送404请求。但这不仅可以在session\u start中完成,因为它在我使用Application\u BeginRequest尝试的每个会话中只运行一次,但遗憾的是,我无法访问该方法中的会话


有人知道我如何实现这一点吗?

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

如果用户使用链接并直接转到另一个控制器怎么办?那么该网站将不会被检查,并打开错误!