Динамический сайт, сеанс доступа в глобальном масштабе

Привет, в настоящее время я разрабатываю своего рода вики-систему для своей школы, эта система использует поддомены, чтобы найти, к какому курсу принадлежит вики. например, math1.wiki.com будет курсом Math 1. Теперь все эти вики используют одну и ту же базу данных и получают идентификатор вики, чтобы найти, какие данные загружать.

Вот код, который я использую, чтобы найти идентификатор вики. 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, но, к сожалению, у меня нет доступа к сеансам в методе.

Кто-нибудь знает, как я могу это реализовать?


person Androme    schedule 18.04.2011    source источник


Ответы (1)


почему вы не можете просто создать пользовательскую функцию, которую вы вызываете в начале главной страницы, чтобы определить, существует ли вики, а если нет, перенаправить/страницу с ошибкой/что угодно. Если это пользовательская функция, вы можете просто вызвать ее при необходимости.

person thepip3r    schedule 18.04.2011
comment
Что, если человек использует ссылку и переходит непосредственно к другому контроллеру? Тогда бы сайт не проверялся, а открывался на ошибки! - person Androme; 18.04.2011