我对ASP.NET MVC比较陌生,所以我对这个问题有点麻烦。当应用程序启动时,我将属性设置为某个值。然而,当我尝试在控制器中访问此属性时(使用this),该属性始终为null。
这是我误解的事吗?
这是代码的简化版本:
public class MvcApplication : System.Web.HttpApplication
{
internal ExtensionManager Extensions { get; private set; }
protected void Application_Start()
{
this.Extensions = new ExtensionManager();
}
}
public ActionResult ListExtension()
{
var app = HttpContext.ApplicationInstance as MvcApplication;
return View(app.Extensions.InstalledExtensions);
}
答案 0 :(得分:5)
在整个应用程序生命周期中创建了多个HttpApplication
实例,但Application_Start
仅在应用程序首次初始化时调用一次。
有关详细信息,请参阅此处:http://msdn.microsoft.com/en-us/library/ms178473%28VS.80%29.aspx
我不知道你要在这里存储什么(扩展名?)但是如果它对所有用户都是全局的,那么你可以使用静态属性,否则将它存储在其他地方。
答案 1 :(得分:1)
迟到的答案(但对于需要帮助的人)。
我也有这个问题。
我认为您可以使用Application["myKey"]
数组来设置一些值。当然它们不是实例属性,但您可以设置依赖注入容器(例如unity,在其代码示例中推荐此选项),然后使用Application["myKey"]
从控制器访问它。
您应该在应用程序启动期间仅设置静态数据。不要设置 任何实例数据,因为它只能用于第一个 创建的HttpApplication类的实例。