.NET 4.0路由和application_start

时间:2011-03-07 11:08:42

标签: .net

我正在使用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来重新托管它。

感谢您的帮助 罗布

1 个答案:

答案 0 :(得分:0)

Application_Start仅在应用程序池启动后首先启动第一个请求。应用程序池将在bin文件夹或web.config中的更改时重新启动。否则,虽然您的代码不会触发。

要做你想做的事,你可能需要一个IHttpModule,或者每个请求上运行的其他东西。

或者,一条catchall路线可能就是你想要的。使用{*catchall}作为路径。