SemaphoreFullException通过ASP.NET成员资格检查用户angular色时

我有一个页面,在执行某个任务之前检查用户是否处于特定angular色,并且对function没有任何问题,并且没有对所涉及的代码进行明显的相关更改。 该站点位于运行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用户名)+847 System.Web.Security.RolePrincipal.IsInRole(stringangular色)+182

此问题已通过在Windows任务栏上重新启动ASP.NET Development Server得到解决。

或者永久添加“Pooling = False” 连接string应该解决这个问题。

我也偶尔得到它。

我相信在我的情况下,这是因为我在页面执行期间停止debugging器,所以可能是数据库连接池搞砸了。

有一个很长的讨论这个在这里: http : //social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/b5b7a179-3737-4380-b6cf-843f3e71b317/

与各种用户报告相同的事情。 没有确切的结论,微软似乎觉得我们的应用程序正在closures他们不应该处理的事情。 但在我们的应用程序中,至less没有CloseHandle调用。

如果这是一个真正的数据库连接池错误,我会认为它会很久以前发现,因为这是每个asp.net网站运行的东西…

我知道这是已经发布,但这是我如何得到它,什么解决它。

我做什么在创buildSQL调用的代码段附近放置了一个断点。

什么解决了它重新启动ASP.NET开发服务器在Windows系统托盘(旁边的时钟在右下angular)

当我在一个正在进行SQL调用的行上插入一个断点时,发生了这种情况。

稍后放置断点(不是在SQL调用)解决了我的问题。

在Windows任务栏上重新启动ASP.NET Cassini为我解决了这个问题!

重新启动Visual Studio为我解决了它。 我在页面加载期间停止了debugging器。

今天早上我大概发现了这个错误。 重新开发LocalHost服务器开始变得非常枯燥,所以我开始挖掘。 长话短说,有一个从来没有被处置的SqlConnection / SqlCommand对,重构代码停止了exception。

在本地运行IIS时,我得到了同样的结果。 似乎是由于在启动站点时停止debugging器。 运行'iisreset'修复了它。