2010-07-09 11 views
9

Sto utilizzando MVC2 e VS2010 per lo sviluppo di un sito Web e ho bisogno di utilizzare i valori globali dello stato dell'applicazione. Posso impostare un valore come 'Applicazione ["hits"] = 0;' in Global.asax ma quando si cerca di utilizzare lo stesso in un controller MVC sempre ottenere il seguente errore:HttpApplicationState non disponibile in un controller MVC

Il nome 'Application' non esiste nel contesto corrente

Ho anche provato ad utilizzare nel Global. ASax al fine di definire una variabile globale, ma si innesca il seguente errore:

uno spazio dei nomi non può contenere direttamente i membri come i campi o metodi

sto cercando un modo per definire i valori dello stato dell'applicazione globali disponibili all'interno di tutti i controller della mia applicazione Web MVC2. Sto omettendo qualcosa? Il mio controller è il seguente:

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

    } 
} 

Apprezzo qualsiasi soluzione e/o suggerimento.

Grazie Mehrdad

+0

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

risposta

10

Io penso che nel MVC3 è possibile ottenere l'accesso a un oggetto HttpApplicationState attuale via il

HttpContext.ApplicationInstance 

proprietà. Cioè:

HttpApplicationState application = HttpContext.ApplicationInstance.Application 
0

Si potrebbe utilizzare una classe statica con un dizionario interno e un indicizzatore.

Inoltre, hai provato HttpContext.Current.Application?

+0

Grazie Jaroslav, il problema viene ora risolto utilizzando la seguente nei controllori: HttpContext.Application ["hits"] – Mehrdad

2

In ASP.NET MVC2, io uso

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

e per ottenere

HttpContext.Application["foo"] 
Problemi correlati