我正在阅读这里的文档: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"];
}
这正是文档中指定的内容,我收到错误:
名称应用程序在当前上下文中不存在。
我做错了什么?
答案 0 :(得分:2)
Application
是HttpApplication
上定义的实例级属性。如果没有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"]);
}