2010-07-09 15 views
9

Używam MVC2 i VS2010 do tworzenia strony internetowej i potrzebuję użyć globalnych wartości stanu aplikacji. Mogę ustawić wartość taką jak "Application [" hits "] = 0; ' w Global.asax ale gdy próbuje użyć tego samego w kontroler MVC zawsze pojawia się następujący błąd:HttpApplicationState nie jest dostępny w kontrolerze MVC

Nazwa „Application” nie istnieje w bieżącym kontekście

Próbowałem również używania w Global. asax aby zdefiniować zmienną globalną, ale wyzwala się następujący błąd:

Przestrzeń nazw nie mogą bezpośrednio zawierać elementy takie jak pola lub metody

szukam sposób definiowania globalnych wartości stanu aplikacji, które są dostępne w ramach wszystkich kontrolerów mojej aplikacji internetowej MVC2. Czy pomijam coś? Mój kontroler wygląda następująco:

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(); 
     } 

    } 
} 

Doceniam wszelkie rozwiązania i/lub sugestie.

Dzięki Mehrdad

+0

http://stackoverflow.com/questions/2266533/does-asp-net-mvc-have-application-variables – David

Odpowiedz

10

myślę że w MVC3 można uzyskać dostęp do rzeczywistego obiektu HttpApplicationState za pośrednictwem

HttpContext.ApplicationInstance 

własność. Czyli:

HttpApplicationState application = HttpContext.ApplicationInstance.Application 
0

Można używać statycznych klasy z wewnętrznym słowniku i indekser.

Czy próbowałeś/aś HttpContext.Current.Application?

+0

Dzięki Jaroslav, problem ten rozwiązano stosując następujące w kontrolerach: HttpContext.Application ["hits"] – Mehrdad

2

w ASP.NET MVC2 używam

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

i dostać

HttpContext.Application["foo"] 
Powiązane problemy