2011-03-07 3 views
0

право я использую событие Application_Start в Global.asax, как так:.NET 4.0 маршрутов и Application_Start

void Application_Start(object sender, EventArgs e) 
    { 
     // Code that runs on application startup 
     RegisterRoutes(RouteTable.Routes); 

    } 

    public static void RegisterRoutes(RouteCollection routes) 
    { 
     var context = new QuestionEntities(); 
     var questionquery = from c in context.Questions where c.Alias != null select c; 

     string alias = ""; 
     foreach (Question q in questionquery.ToList()) 
     { 
      try 
      { 
       alias = q.QuestionText.Replace(" ", "-").Replace("?", "").ToLower(); 
      } 
      catch { } 
      routes.MapPageRoute("", alias, "~/Default.aspx"); 
     } 

     routes.MapPageRoute("", "home", "~/Default.aspx"); 
     routes.MapPageRoute("", "rss", "~/rss.aspx"); 
    } 

Это все хорошо, но когда я создаю новый вопрос и добавить псевдоним, это не refire. Я попытался остановить и запустить веб-сайт. Есть ли способ заставить это событие отказаться.

Я использую reinvent хостинг, поэтому у меня нет прямого доступа к IIS, чтобы переделать его.

Спасибо за вашу помощь Роб

ответ

0

Application_Start только сначала первый запрос после того, как начинается ваше приложение бассейн. Пул приложений перезапустится при изменении папки bin или файла web.config. В противном случае ваш код не будет срабатывать.

Чтобы сделать то, что вам нужно, вам, вероятно, понадобится IHttpModule или что-то еще, что выполняется по каждому запросу.

Альтернативно, общий путь может быть тем, что вы хотите. Используйте путь {*catchall}.

+0

Энди - спасибо, я посмотрю позже на обед и вернусь к вам. – Robert