【问题标题】:HttpApplicationState not available in an MVC controllerHttpApplicationState 在 MVC 控制器中不可用
【发布时间】:2011-03-13 22:01:11
【问题描述】:

我正在使用 MVC2 和 VS2010 开发网站,需要使用 Application State 全局值。我可以设置一个像 'Application["hits"]=0;' 这样的值在 Global.asax 但尝试在 MVC 控制器中使用相同的控制器时,总是会出现以下错误:

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

我也尝试在 Global.asax 中使用以定义全局变量,但它会触发以下错误:

命名空间不能直接包含字段或方法等成员

我正在寻找一种方法来定义在我的 MVC2 Web 应用程序的所有控制器中可用的全局应用程序状态值。我遗漏了什么吗?我的控制器如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MVCApplication.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            Application["hits"] += 1;

            ViewData["Message"] = "Welcome to ASP.NET MVC!";
            return View();
        }

    }
}

感谢任何解决方案和/或建议。

谢谢 麦尔达

【问题讨论】:

标签: c# asp.net-mvc-2 controller global-variables global-asax


【解决方案1】:

认为在 MVC3 中,您可以通过

访问实际的 HttpApplicationState 对象
HttpContext.ApplicationInstance

属性。那就是:

HttpApplicationState application = HttpContext.ApplicationInstance.Application 

【讨论】:

    【解决方案2】:

    在 ASP.NET MVC2 中,我使用

    HttpContext.Application["foo"] = "bar";
    

    得到

    HttpContext.Application["foo"]
    

    【讨论】:

      【解决方案3】:

      您可以使用带有内部字典和索引器的静态类。

      另外,你试过HttpContext.Current.Application吗?

      【讨论】:

      • 感谢 Jaroslav,现在在控制器中使用以下内容解决了问题:HttpContext.Application["hits"]
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 2020-02-03
      • 1970-01-01
      • 2018-02-01
      相关资源
      最近更新 更多