Question

Je suis une webapp qui stocke un objet de configuration dans ApplicationState. Cet objet contient la chaîne de connexion à la base de données entre autres.

je commence parfois un fil async faire quelques tâches plus courantes, comme l'envoi de courriels et mettre à jour la base de données.

Cependant, puisque ce fil ne dispose pas d'un HttpContext je ne peux pas obtenir à l'objet config.

Je sais que cette conception que tout dépend de HttpContext est mauvais, mais c'est trop tard pour changer maintenant. En regardant réflecteur je vois que la classe HttpContext utilise juste une classe interne statique pour obtenir le ApplicationState. Y at-il d'autre moyen de nous mettre au travail?

Toutes les classes internes en .net sont vraiment ennuyeux.

Était-ce utile?

La solution

Autres conseils

Si vous vraiment doivent avoir accès à l'application État (ou similaire) de gestionnaires async vous devez modifier votre sous-classe HttpApplication (par exemple Global.asax) pour stocker l'instance d'application État (this.Application) à une propriété statique pendant Application_Start:

public static HttpApplicationStateWrapper State { get; private set; }

protected void Application_Start()
{
    State = new HttpApplicationStateWrapper(this.Application);
}

Il serait plus approprié d'utiliser un cadre de DI pour enregistrer cette instance, mais si vous en avez un vous pourriez probablement éviter l'utilisation d'État application tout à fait pour le stockage de configuration. En outre, il existe un cadre de configuration dans .NET qui répond directement à ce besoin et offre la possibilité de lire la configuration où que vous soyez.

scroll top