我正在使用Global.asax中的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");
}
这一切都很好,但是当我创建一个新问题并添加一个别名时,这不会重新启动。我试过停止并启动网站。有没有办法迫使这个事件重新开始。
我正在使用reinvent托管,因此无法直接访问IIS来重新托管它。
感谢您的帮助 罗布
答案 0 :(得分:0)
Application_Start仅在应用程序池启动后首先启动第一个请求。应用程序池将在bin文件夹或web.config中的更改时重新启动。否则,虽然您的代码不会触发。
要做你想做的事,你可能需要一个IHttpModule,或者每个请求上运行的其他东西。
或者,一条catchall路线可能就是你想要的。使用{*catchall}
作为路径。