J'ai une page qui vérifie qu'un utilisateur a un rôle particulier avant d'effectuer une certaine tâche. Je n'ai eu aucun problème de fonctionnalité et je n'ai apporté aucune modification évidente au code en question. Le site est sur ma machine de développement (Windows Vista) exécutant IIS 7.0 et la base de données est MS SQL 2005 sur un serveur séparé. Soudain, tous les appels à la base de données User.IsInRole
se traduisent par
System.Threading.SemaphoreFullException : L'ajout du nombre spécifié au sémaphore lui ferait dépasser son nombre maximal.
Je suis sûr que le redémarrage d'IIS "résoudra" le problème, mais j'aimerais en comprendre la cause afin de m'assurer que cela ne se reproduira pas sur mon site de production.
Le haut de la trace de la pile est :
[SemaphoreFullException : L'ajout du nombre spécifié au sémaphore lui ferait dépasser son nombre maximal]. System.Threading.Semaphore.Release(Int32 releaseCount) +6065293 System.Data.ProviderBase.DbConnectionPool.PutNewObject(DbConnectionInternal obj) +57 System.Data.ProviderBase.DbConnectionPool.DeactivateObject(DbConnectionInternal obj) +338 System.Data.ProviderBase.DbConnectionPool.PutObject(DbConnectionInternal obj, Object owningObject) +163 System.Data.ProviderBase.DbConnectionInternal.CloseConnection(DbConnection owningObject, DbConnectionFactory connectionFactory) +117 System.Data.SqlClient.SqlInternalConnection.CloseConnection(DbConnection owningObject, DbConnectionFactory connectionFactory) +37 System.Data.SqlClient.SqlConnection.Close() +158 System.Web.DataAccess.SqlConnectionHolder.Close() +25 System.Web.Security.SqlRoleProvider.GetRolesForUser(String username) +847 System.Web.Security.RolePrincipal.IsInRole(String role) +182