2011-06-01 89 views
3

是否有可能在Application_Start上創建可用於所有控制器的類實例?在Application_Start上創建一個類實例

我希望能夠創造出例如:

var globalHelper = new LoadsStuff(); 

,然後在我的操作方法:

globalHelper.GetInfoFor("key"); 

我的助手類加載一個相當大的XML文件,內存和I會喜歡只做一次。

+0

是否使用MVC?如果你是,你應該在你的標籤中註明。 – DOK 2011-06-01 13:41:28

+0

我做了,但一個管理員更改標籤爲asp.net,我只是修復:) – 2011-06-01 13:42:13

+1

這聽起來像你想要使用依賴注入可疑。看看ninject mvc http://weblogs.asp.net/shijuvarghese/archive/2010/04/30/dependency-injection-in-nerddinner-app-using-ninject.aspx – 2011-06-01 13:44:09

回答

3

使用應用程序變量:

Application["GlobalHelper"] = new LoadsStuff(); 

((LoadsStuff) Application["GlobalHelper"]).GetInfoFor("key"); 

參考:

ASP.NET Application State Overview

+0

應用程序在控制器中不可用,你確定這是正確的嗎? – 2011-06-01 13:48:33

+0

@BjarkiHeiðar:試試'HttpContext.Current.Application'。 – 2011-06-01 13:57:58

+1

它是HttpContext.Application,謝謝。 – 2011-06-01 14:01:39

1

如果您將XML文件Application level object置於Application_Start事件中怎麼辦?

void Application_Start(object sender, EventArgs e) 
{ 
    Application[""] = // 
} 
0

是的,我認爲你可以。 我沒有試過,但類似:

ManagedWebSessionContext.Bind(HttpContext.Current, globalHelper) 
相關問題