Sont des problèmes de concurrence possible lors de l'utilisation du Service WCF Comportement de l'attribut ConcurrencyMode.Multiples et InstanceContextMode.PerCall?

Nous avons un service WCF qui fait une bonne partie de transactionnelles NHibernate appels. Occasionnellement, nous avons été voir les SQL délais d'attente, même si les appels ont mis à jour les différentes lignes et les tableaux ont été mis à verrouillage de niveau ligne.

Après avoir creusé dans les journaux, il ressemble à différents threads ont été saisie de la même point dans le code (notre transaction à l'aide de bloc), et une mise à jour a été suspendu à s'engager. Il n'avait pas de sens, bien que, parce que nous avons cru que le service suivant attribut de classe a forcé un unique thread d'exécution par un appel de service:

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerCall)]

Nous avons récemment changé la simultanéité mode de ConcurrencyMode.Single et n'avez pas de problèmes, mais le bug a été très difficile à reproduire (si quelqu'un a des idées sur la vidange d'un bug comme ça, laissez-moi savoir!).

De toute façon, que tous m'amène à ma question: ne devrait-il pas un InstanceContextMode de PerCall appliquer fil-sécurité au sein du service, même si le ConcurrencyMode est définie à plusieurs? Comment serait-il possible pour les deux appels à être desservis par la même instance de service?

Merci!