访问ApplicationState变量

时间:2014-12-19 18:11:32

标签: c# asp.net-mvc-4

我正在阅读这里的文档:http://msdn.microsoft.com/en-us/library/ms178594%28v=vs.140%29.aspx,以便创建一个变量,告诉程序是否在本地环境中。

所以这就是我在Global.asax.cs中所拥有的:

namespace website
{
    public class MvcApplication : System.Web.HttpApplication
    {
        ...
        Application["loc"] = false;
        if (Request.Headers["host"].Contains("localhost"))
        {
            Application["loc"] = true;
        }
    }
}

当我尝试在这样的Model文件中访问ApplicationState变量时:

if (Application["loc"] != null)
{
    bool loc = (bool)Application["loc"];
}

这正是文档中指定的内容,我收到错误:

  

名称应用程序在当前上下文中不存在。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

ApplicationHttpApplication上定义的实例级属性。如果没有HttpApplication的实例,您无法尝试访问它。

可以通过静态属性HttpContext.Current获取对当前HttpApplication的引用,该属性将返回HttpContext个对象;这可以be further queried获得实际的HttpApplication

例如

var myHttpApp = HttpContext.Current.ApplicationInstance;
var appState = myHttpApp.Application;

您也可以直接使用HttpContext.Current.Application来获取对当前HttpApplicationState对象的引用。

要修复代码,您可以执行以下操作:

if (HttpContext.Current.Application["loc"] != null)
{
    bool loc = (bool)(HttpContext.Current.Application["loc"]);
}