使用ASP.NET MVC3。
我要做的是使用Application状态变量初始化Controller字段/属性。
即。在我的Application_Start()方法中我有
Application["stats"] = new Stats(); //this is fine
通过Controller方法访问它,例如
public ActionResult Index()
{
return View(HttpContext.Application["stats"]); //this is also fine
}
也可以。
//blows up with a 'Object reference not set to an object' error.
private Stats stats;
public HomeController()
{
stats= (Stats)(HttpContext.Application["stats"]);
}
任何人都能解释我无法理解的内容+如何解决问题?如果有更好的方法,请告诉我(如果你想知道,我不是要加载应用程序配置或任何东西;只是为了保持网站状态的实时统计数据)
提前致谢
-Marcin
答案 0 :(得分:1)
HttpContext
尚未在控制器构造函数内初始化,并且为null。
如果你需要访问任何与HttpContext相关的东西,这可以在Initialize方法的早期完成:
public class HomeController: Controller
{
private Stats stats;
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
stats = (Stats)(HttpContext.Application["stats"]);
}
}
答案 1 :(得分:0)
你问题中的HttpContext是控制器上的属性,正如Darin所说,尚未初始化。但是你可以使用它:
private Stats stats;
public HomeController()
{
stats= (Stats)(System.Web.HttpContext.Current.Application["stats"]);
}