Регистрация динамических маршрутов, требуется перезапуск приложения? - PullRequest
6 голосов
/ 18 октября 2010

Я работаю над небольшой CMS для развлечения и как часть этого я регистрирую маршруты из базы данных при запуске приложения.Пользователь может самостоятельно добавить маршрут.Проблема в том, что этот маршрут хранится в БД и поэтому не регистрируется до перезапуска приложения.

Можно ли перерегистрировать маршруты без перезапуска приложения?

Если нет, то какперезапустить приложение по требованию?

Ура,

Ян

1 Ответ

6 голосов
/ 18 октября 2010

Нет, вы можете добавлять и удалять маршруты динамически.RouteTable.Routes - это просто RouteCollection, который имеет Add и Remove членов (или, если вы предпочитаете, Clear).

Помните, что веб-сервер является многопоточным, однаковам нужно будет использовать протокол блокировки RouteCollection.В частности, это означает GetWriteLock:

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