访问应用程序状态变量

本文关键字:变量 程序状态 应用 访问 | 更新日期: 2023-09-27 18:34:48

我正在浏览这里的文档: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;
        }
    }
}

当我尝试访问模型文件中的 ApplicationState 变量时,如下所示:

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

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

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

我做错了什么?

访问应用程序状态变量

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

对当前HttpApplication的引用可以通过静态属性HttpContext.Current获取,这将返回一个HttpContext对象;这可以进一步查询以获取实际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"]);
}