ASP .NET應用程序啓動多少次?ASP .NET應用程序啓動多少次?
我想每個AppDomain運行一次(特別是RegisterRoutes)。如果我把我想在Application_Start中的global.asax中執行的代碼放在一起,那麼一切都很好(似乎是這樣),代碼似乎只執行一次。
但如果我有在web.config中註冊的自定義HTTP模塊,它具有以下功能:
public class SomeHttpModule:IHttpModule
{
public void Init(HttpApplication context)
{
new SomeRunner().Run();
}
public void Dispose()
{
}
}
public class SomeRunner
{
private static object syncLock = new object();
private static bool hasRun;
public void Run()
{
lock(syncLock)
{
if (!hasRun)
{
hasRun = true;
RegisterRoutes();
}
}
}
public void RegisterRoutes()
{
// Register MVC Routes
}
}
當我打「走出去」在Visual Studio中,我的調試器在我的斷點停止在第一線Run方法......但是如果我檢查RouteTable.Routes集合... lo和behlold ... MVC路由已經被註冊(意味着RegisterRoutes必須已經被調用)...即使hasRun是假的!
這是在Visual Studio中調試IIS網站時出現的一些奇怪現象嗎?我知道IIS可以在一個AppDomain中託管兩個HttpApplications,並且這會讓SomeHttpModule在相同的AppDomain中獲得兩次Init_d ...對吧?但是,我的靜態布爾hasRun仍然可能是假的?
謝謝。
你是否也在'Application_Start'中調用'RegisterRoutes()'? – 2010-08-19 06:03:26
大聲笑,不,我不:) – Jeff 2010-08-19 06:15:44