2013-03-12 11 views
5

Aktualny kod ASAX (uproszczony):Tworzenie marszruty z zapisów DB

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"))); 
} 

Pytanie

Czy można bezpiecznie wyciągnąć trasy z DB w tym momencie? Na przykład:

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); 
    } 
} 

Dodatkowe informacje

To pytanie rodzi się z braku wiedzy na temat trasy, jak również ogólną nieznajomość global.asax. W przeszłości używałam tylko global.asax do wyjątkowo prostych zadań; DB czuje się jak, tak jak robię to na inny poziom.

+1

Dlaczego miałoby to być niebezpieczne? Innymi słowy, co skłoniło cię do zastanowienia się nad tym pytaniem? – Yuck

+0

+1 Chciałbym też wiedzieć! Ale z drugiej strony: Gdzie indziej należy rejestrować trasy? Oczywiście "try..catch" byłoby dobrym pomysłem. –

+1

@ Milk, świetne pytanie. Zobacz dodatkowe informacje. Dodam, że ostatnia zmiana stanowiska czyni mnie jedynym programistą w organizacji. Czasami trudno jest nie mieć kogoś, z kim można odrzucić pomysły. –

Odpowiedz

1

Czy to bezpieczne

Co to jest "bezpieczny" i dlaczego nie miałoby to być?

Routing jest zbudowany za pomocą łańcuchów, kod nie ma znaczenia, skąd pochodzą te łańcuchy, czy jest to zakodowane na stałe, pliki zasobów, serwisy internetowe, plik tekstowy lub baza danych.

Dopóki upewnisz się, że masz domyślne trasy do pokazywania stron z błędami, gdy baza danych jest niedostępna, nie widzę (oprócz być może kary za pierwsze trafienie), dlaczego nie chcesz zrób to w ten sposób.

Powiązane problemy