2010-10-18 11 views
6

Estoy trabajando en un pequeño CMS por diversión y como parte de esto, registro rutas desde una base de datos al inicio de la aplicación. Es posible que un usuario agregue una ruta por sí mismo. El problema es que esta ruta se almacena en el archivo db y, por lo tanto, no se registra hasta que se reinicia la aplicación.Al registrar rutas dinámicas, ¿necesita reiniciar la aplicación?

¿Es posible volver a registrar rutas sin reiniciar la aplicación?

En caso negativo, ¿cómo reinicio la aplicación bajo demanda?

Saludos,

Ian

Respuesta

6

No, puede añadir y eliminar rutas de forma dinámica. RouteTable.Routes es simplemente un RouteCollection que tiene Add y Remove miembros (o, si lo prefiere, Clear).

Tenga en cuenta que el servidor web es multiproceso, sin embargo, por lo que deberá utilizar el protocolo de bloqueo RouteCollection. En particular, eso significa GetWriteLock:

var routes = RouteTable.Routes; 
var newDynamicRoute = new Route(...); 
using(routes.GetWriteLock()) { 
    routes.Remove(dynRoute); 
    dynRoute = newDynamicRoute; 
    routes.Add(dynRoute); 
} 
Cuestiones relacionadas