Chi avesse provato ad utilizzare le risorse localizzate, spostandone lo storage nel database come ho spiegato tempo fa, si sarà reso conto che spesso Visual Studio 2005 restituisce un errore di compilazione che in buona sostanza informa che l'IDE non è in grado di trovare la risorsa specificata.

Questo succede perchè le risorse localizzate vengono caricate già dall'ide di Visual Studio. In realtà quando inserite un ExpressionBuilder questo viene immediatamente convertito nel codice relativo ed eseguito, talvolta anche troppo rapidamente. Ora, nel mio esempio, ma anche in molti altri che si trovano in rete, il codice dell'ResourceProvider si appoggia alla istanza singleton di HttpContext, esposta dalla proprietà Current per determinare in base all'url chiamato il corretto set di risorse. Quando siamo a DesignTime in Visual Studio 2005, non esiste un context HTTP per cui il codice eseguito genererà nella maggioranza dei casi un'eccezione per cui l'ide mostrerà l'errore suddetto.

La soluzione a questo punto è banale: occorre testare il valore di HttpContext.Current per verificare che non sia null prima di interrogare il database. Nel mio caso, qualora il contesto http sia nullo mi premuro di fornire al ResourceProvider dei parametri di default che si occupano addirittura di creare la risorsa mancante riempiendola con un valore fittizio che rende semplice la sua ricerca e popolazione durante la fase di labeling dell'applicazione.

Il codice è semplice:

if (HttpContext.Current == null)
    MakeDefaultResourceContext();

Buone risorse a tutti...

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: ASP.NET 2.0: Resource not found