Sta*_*ing 36 membership asp.net semaphore exception
我有一个页面,在执行某项任务之前检查用户是否处于特定角色,并且对功能没有任何问题,并且没有对相关代码进行明显的相关更改.该站点位于运行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
hag*_*oft 24
通过在Windows任务栏上重新启动ASP.NET Development Server来解决此问题.
或永久添加'Pooling = False;' 连接字符串应解决问题.
O'R*_*ney 11
我偶尔也会得到它.
我相信在我的情况下,它发生是因为我在页面执行期间停止了调试器,所以可能数据库连接池搞砸了.
这里有一个很长的讨论:http: //social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/b5b7a179-3737-4380-b6cf-843f3e71b317/
与各种用户报告相同的事情.没有明确的结论,微软似乎觉得我们的应用程序正在关闭他们不应该处理的句柄.但在我们的应用程序中至少没有CloseHandle调用.
如果它是数据库连接池中的真正错误,我会认为它很久以前就会被发现,因为这是运行每个asp.net网站的东西......
Luk*_*kas 11
我知道它已被发布,但这是我如何得到它,以及解决它的原因.
我做 了什么在进行SQL调用的代码段附近放置一个断点.
是什么原因解决了它 在Windows系统托盘中重启ASP.NET开发服务器(在右下角的时钟旁边)
归档时间: |
|
查看次数: |
32934 次 |
最近记录: |