Проверьте условия на каждой странице запроса - PullRequest
0 голосов
/ 14 октября 2010

У меня мультитенантное приложение ASP.NET MVC, которое использует субдомены для определения текущего арендатора.Является ли домен действительным, определяется с помощью поиска в таблице базы данных.

Где было бы лучшее место для функции, которая проверяет, находится ли домен в базе данных? Если субдомен отсутствует в базе данных, онследует перенаправить на действие Index в контроллере Error.

Размещение проверки в методе Application_BeginRequest в файле Global.asax не работает, потому что бесконечные результаты перенаправления.

Ответы [ 2 ]

1 голос
/ 14 октября 2010

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

Размещение проверки в методе Application_BeginRequest в файле Global.asax не работает, поскольку результаты перенаправления никогда не заканчиваются.

Это правильное место, вам просто нужно проверить URL-адрес запроса:еще не /Error.

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

0 голосов
/ 14 октября 2010

вы можете наследовать атрибут actionFilter и переопределять метод onactionExecuting. в этом методе вы можете делать любые проверки базы данных и перенаправлять пользователя соответствующим образом

public class CustomActionFilterAttribute : ActionFilterAttribute
{
     public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if(DatabaseLookup)
        {
           return;
        }
        filterContext.Result = new RedirectResult("http://servername/Error");

    }

}

теперь вы можете украсить свои методы действий с помощью этого пользовательского атрибута actionfilter

[CustomActionFilter]
public ActionResult mymethod()
{
    //action method goes here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...