У меня есть страница, которая проверяет, что пользователь находится в определенной роли перед выполнением какой-либо задачи, и не имел проблем с функциональностью и не делал никаких очевидных связанных изменений с данным кодом. Сайт находится на моей машине разработки (Windows Vista) с IIS 7.0, а база данных - MS SQL 2005 на отдельном сервере. Внезапно все вызовы User.IsInRole
приводят к
System.Threading.SemaphoreFullException: добавление указанного счетчика в семафор приведет к превышению максимального значения.
Я уверен, что перезагрузка IIS "решит" проблему, но я хотел бы понять, что вызвало ее, поэтому я могу убедиться, что этого не происходит на моем производственном сайте.
Верхняя часть трассировки стека:
[SemaphoreFullException: добавление указанного счетчика в семафор приведет к превышению максимального количества.] 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, объект 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(имя пользователя) +847 System.Web.Security.RolePrincipal.IsInRole(роль строки) +182