2013-03-12 2 views
5

Текущий код ASAX (упрощенно):Создание маршрутов из БД записей

void Application_Start(object sender, EventArgs e) 
{   
    // Enable routing 
    RegisterRoutes(RouteTable.Routes); 
} 

void RegisterRoutes(RouteCollection routes) 
{ 
    routes.Add("ContactUsRoute", 
       new Route("contact-us", 
       new PageRouteHandler("~/contactus.aspx"))); 
} 

Вопрос

Безопасно ли тянуть маршруты из БД в этот момент? Например:

void RegisterRoutes(RouteCollection routes) 
{ 
    routes.Add("ContactUsRoute", 
       new Route("contact-us", 
       new PageRouteHandler("~/contactus.aspx"))); 

    // BusinessLogic.GetPageRoutes() returns a List<Route> 
    var dbRoutes = BusinessLogic.GetPageRoutes(); 

    foreach (Route route in dbRoutes) 
    { 
     routes.Add(route); 
    } 
} 

Прочая информация

Этот вопрос рождается из-за отсутствия знаний о маршрутизации, а также общее незнакомство с global.asax. Раньше я использовал global.asax для чрезвычайно простых задач; DB чувствует, как будто я перехожу на другой уровень.

+1

Почему это небезопасно? Иными словами, что побудило вас думать, что это может быть и задать этот вопрос? – Yuck

+0

+1 Я тоже хотел бы знать! Но с другой стороны: где еще вы должны регистрировать маршруты? Конечно, «try..catch» - хорошая идея. –

+1

@Yuck, большой вопрос. См. Дополнительную информацию. Я бы добавил, что недавнее изменение позиции делает меня единственным разработчиком в организации. Время от времени может быть трудно не дать кому-то отказаться от идей. –

ответ

1

Безопасно

Что такое "безопасный", и почему бы не быть?

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

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

Смежные вопросы