У меня есть страница, которая проверяет, что пользователь выполняет определенную роль, перед выполнением какой-либо задачи, у меня не было проблем с функциональностью, и я не внес никаких очевидных связанных изменений в рассматриваемый код. Сайт находится на моей машине разработки (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 (String username) +847
System.Web.Security.RolePrincipal.IsInRole (строковая роль) + 182