2012-10-11 35 views
2

我有一個靜態數據列表。 我希望每次都重新填充此列表中的數據,以便重新啓動IIS 這意味着:在有人進入該站點之前填寫列表。如何在每次重新啓動IIS時執行一些代碼

任何人都可以給ne an answere ???

我heared關於「熱身模塊」 ......但我不知道如何使用它..

+0

也許你需要的應用程序啓動時,不知道 – V4Vendetta

+0

該網站實際上並沒有啓動,直到有人訪問它 - 或者至少要等到什麼使得它的要求,所以相當困難的數據加載之前那。除非你想要投入大量工作,否則最好的辦法是在第一次加載數據時加載數據,然後緩存它。是的,這意味着第一個請求很慢,但對於任何網站來說都是如此。 –

回答

2

您可以使用WebActivator(可作爲NuGet包)來執行一些代碼,當你的web應用程序開始。

或者在global.asax中使用Application_Start()。

+0

我試圖把我的代碼放在Application_Start()中,但是當我重新啓動到IIS時,什麼都沒有發生! – BrMe

+0

Application_Start()發生在我進入瀏覽器的網站之後! – BrMe

1

你可以實現數據作爲單身屬性嗎?

private object myListOfData; 

object MyListOfData 
{ 
    get 
    { 
     if (myListOfData == null) 
      myListOfData = CodeYouWantToRunOnIisResart(); 

     return myListOfData; 
    } 
} 
+0

單身是邪惡的,在這種情況下絕對不需要 – lboshuizen

+0

您可以編寫如下代碼:'private Lazy m_Data = new Lazy (GetMyData()); public MyData Data {get {return m_Data.Value; }}' –

+0

@lboshuizen要精心製作而不只是說它們是邪惡的? btw我會說global_asax中的Application_Start()可能是最好的,但我的答案可能是最簡單的 – Tobsey

相關問題