Sur un ASP.NET site web, sont statiques des classes uniques à chaque requête web, ou sont-ils instancié à chaque fois que nécessaire et GCed chaque fois que le GC décide d'aliénés?
La raison pour laquelle je demande c'est parce que j'ai écrit certains de classes statiques avant en C# et le comportement est différent que je l'aurais imaginé. Je me serais attendu de classes statiques être unique pour chaque demande, mais il ne semble pas comme c'est le cas.
Si ils ne sont pas uniques à chaque demande, est-il un moyen pour leur permettre d'être?
Mise à JOUR:
La réponse driis m'a donné était exactement ce dont j'avais besoin. J'étais déjà en utilisant une classe singleton, cependant, il a été à l'aide d'une instance statique et, par conséquent, était partagée entre les demandes, même si les utilisateurs étaient différents, qui dans ce cas était une mauvaise chose. À l'aide de HttpContext.Current.Items
résout mon problème à la perfection. Pour tous ceux qui bute sur cette question dans l'avenir, voici ma mise en œuvre simplifiée et raccourcie de sorte qu'il est facile de comprendre le modèle:
using System.Collections;
using System.Web;
public class GloballyAccessibleClass
{
private GloballyAccessibleClass() { }
public static GloballyAccessibleClass Instance
{
get
{
IDictionary items = HttpContext.Current.Items;
if(!items.Contains("TheInstance"))
{
items["TheInstance"] = new GloballyAccessibleClass();
}
return items["TheInstance"] as GloballyAccessibleClass;
}
}
}