c# - 访问 ApplicationState 变量

标签 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;
        }
    }
}

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

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

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

The Name Application does not exist in the current context.

我做错了什么?

最佳答案

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"]);
}

关于c# - 访问 ApplicationState 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27571602/

相关文章:

c# - 在 C# 中可靠地重现在 PHP 中实现的遗留密码哈希方法

c# - Dotnet Core 是否实现组合根发现?

razor - MVC4 Razor 自定义 View 定位器

asp.net-mvc-4 - 添加引用列表中缺少 System.Web.Http.Description

c# - 工作单元测试的单元测试失败

c# - 从 C# 访问私有(private) GitHub 存储库中的文件

c# - XML 序列化类结果为空 XML

.net - 如何让 System.Web.Optimization 包与 IIS 虚拟目录中的自定义文件夹一起使用?

c# - 堆栈跟踪如何指向错误的行( “return”语句)-关闭40行

asp.net-mvc-3 - 插入命令需要插入数据绑定(bind)设置 Kendo Grid 错误任何人