我有一个页面,在执行某项任务之前检查用户是否处于特定角色,并且对功能没有任何问题,并且没有对相关代码进行明显的相关更改.该站点位于运行IIS 7.0的开发计算机(Windows Vista)上,数据库位于单独的服务器上,是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,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