动态站点,全局访问会话

发布于 2024-11-02 05:27:37 字数 1142 浏览 4 评论 0原文

您好,我目前正在为我的学校开发一种维基系统,该系统使用子域来查找维基属于哪个课程。例如 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_start() 中完成,因为它每个会话只运行一次,因此我尝试使用 Application_BeginRequest,但遗憾的是我无法访问该方法中的会话。

有谁知道我该如何实现这一点?

Hello i am currently developing a kind of wiki system for my school, this system uses sub domains to find what course the wiki belongs to. example math1.wiki.com will be the course Math 1.
Now all these wikis use the same database and are given a wiki id, to find what data to load.

Here is the code i use to find the 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;
    }

This is all fine, but i want to make the mvc system send a 404 request if no wiki was found for the subdomain. But this can not only be done in session_start() as it only runs once per session i have therefor tryed using Application_BeginRequest, but sadly do i not have access to the sessions in the method.

Do any one know how i can implement this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

携余温的黄昏 2024-11-09 05:27:37

为什么你不能创建一个在主页开头调用的自定义函数来确定 wiki 是否存在,如果不存在,则重定向/错误页面/其他内容。如果是自定义函数,需要的时候调用即可。

why can't you just make a custom function that you call at the start of the main page to determine if the wiki exists and if not, redirect/error page/whatever. If it's a custom function, you can just recall it when necessary.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文