2010-10-18 17 views
6

Eğlence için küçük bir CMS üzerinde çalışıyorum ve bunun bir parçası olarak uygulama başlangıcındaki bir veritabanından rotaları kaydediyorum. Bir kullanıcının bir rota eklemesi mümkündür. Sorun, bu yolun db'de saklanması ve uygulamanın yeniden başlatılmasına kadar kayıtlı olmamasıdır.Dinamik rotaları kaydetme, bir uygulama yeniden başlatılması mı gerekiyor?

Uygulama yeniden başlatılmadan rotaları yeniden kaydettirmek mümkün mü?

Değilse, istek üzerine uygulamayı nasıl yeniden başlatırım?

Alkış,

Ian

cevap

6

Hayır, eklemek ve dinamik yolları kaldırabilirsiniz. RouteTable.Routes, Add ve Remove üyelerine sahip bir RouteCollection üyedir (ya da isterseniz, Clear).

Web sunucusunun çok iş parçacıklı olduğunu unutmayın, bu nedenle RouteCollection'un kilitleme protokolünü kullanmanız gerekir. Özellikle, bu GetWriteLock:

var routes = RouteTable.Routes; 
var newDynamicRoute = new Route(...); 
using(routes.GetWriteLock()) { 
    routes.Remove(dynRoute); 
    dynRoute = newDynamicRoute; 
    routes.Add(dynRoute); 
} 
İlgili konular