是否有可能在Application_Start
上创建可用于所有控制器的类实例?在Application_Start上创建一个类实例
我希望能够创造出例如:
var globalHelper = new LoadsStuff();
,然后在我的操作方法:
globalHelper.GetInfoFor("key");
我的助手类加载一个相当大的XML文件,内存和I会喜欢只做一次。
是否有可能在Application_Start
上创建可用于所有控制器的类实例?在Application_Start上创建一个类实例
我希望能够创造出例如:
var globalHelper = new LoadsStuff();
,然后在我的操作方法:
globalHelper.GetInfoFor("key");
我的助手类加载一个相当大的XML文件,内存和I会喜欢只做一次。
使用应用程序变量:
Application["GlobalHelper"] = new LoadsStuff();
((LoadsStuff) Application["GlobalHelper"]).GetInfoFor("key");
参考:
应用程序在控制器中不可用,你确定这是正确的吗? – 2011-06-01 13:48:33
@BjarkiHeiðar:试试'HttpContext.Current.Application'。 – 2011-06-01 13:57:58
它是HttpContext.Application,谢谢。 – 2011-06-01 14:01:39
如果您将XML文件Application level object
置于Application_Start
事件中怎么办?
void Application_Start(object sender, EventArgs e)
{
Application[""] = //
}
是的,我认为你可以。 我没有试过,但类似:
ManagedWebSessionContext.Bind(HttpContext.Current, globalHelper)
是否使用MVC?如果你是,你应该在你的标签中注明。 – DOK 2011-06-01 13:41:28
我做了,但一个管理员更改标签为asp.net,我只是修复:) – 2011-06-01 13:42:13
这听起来像你想要使用依赖注入可疑。看看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