J'ai besoin d'un stockage local HttpApplication. Je pensais que l'ApplicationState était l'endroit pour cela, mais apparemment cela peut être partagé entre les instances HttpApplication dans un Appdomain.Stockage local ASP.NET HttpApplication
public class MyHttpModule : IHttpModule
{
private object initializingLock = new object();
private static HttpApplication last;
public void Init(HttpApplication context)
{
lock (initializingLock)
{
// always is false, as expected
if (last == context)
{
}
// is true for 2nd HttpApplication in AppDomain!
if (last != null && last.Application == context.Application)
{
}
last = context;
}
}
}
Quelle est la meilleure Blace à utiliser pour stocker des données qui est par HttpApplication que d'autres choses peuvent accéder?
-1 sans verrouillage –
@John Saunders, je suis simplement ILLUSTRATION d'avoir l'état par objet HttpApplication. Le fait que le verrouillage soit nécessaire dépend de l'implémentation globale et du modèle d'utilisation. Je comprends que * une instance HttpApplication * servira * une requête à la fois * il est donc tout à fait possible d'utiliser des variables d'instance de l'objet HttpApplication sans verrouillage explicite si son utilisation est limitée dans une portée de requête. – VinayC
Cela fonctionne, mais j'espérais quelque chose qui fonctionnera dans une DLL, où je ne contrôle pas le HttpApplication lui-même (et donc ne contrôle pas le global.asax, seulement mon HttpModule) ... – Jeff