Question

Notre application suit l'approche de maintenir un DataContext par Thread/HttpContext, à l'aide de la DataContextFactory classe décrite par Rick Strahl sur son blog, y compris la modification de la Clé mentionnée par Richard (utilisation de type.AssemblyQualifiedName).

La solution est apparue le son (bien que dans la plupart des cas, une approche différente peut être mieux), mais en utilisant ce que j'ai vu des erreurs intermittentes figurant dans la demande:

ExecuteReader requiert une ouverture d' Connexion disponible.La connexion état actuel est fermé.

J'ai accès au datacontext dans le code ci-dessous à l'aide de la propriété, qui est une partie de mon DataContext de la classe:

/// <summary>
/// Returns the current datacontext for the thread or HttpContext, creating one if it does not exist.
/// </summary>
public static SharedDataContext Current
{
    get
    {
        return DataContextFactory.GetScopedDataContext<SharedDataContext>();
    }
}

Étant intermittment je vais avoir un moment difficile de les épingler ce vers le bas.Personne ne sait ce que je pourrais faire du mal, ou d'avoir une bonne idée de comment je pourrais être en mesure de déboguer ce problème?


Remarque cela pourrait être un double de l' sans réponse question ici

Était-ce utile?

La solution

Nous utilisons maintenant une coutume DataContextFactory qui maintient datacontexts par transaction.Le seul autre changement majeur a été l'utilisation de [ThreadStatic] pour les propriétés, plutôt qu'à la main de l'accès via le Fil de discussion.Get/SetData

Depuis ce changement, le problème ne semble plus apparaître, et comme pas d'autres réponses ont été mettre en avant, je suggère [ThreadStatic] comme la solution

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top