首页 新闻 搜索 专区 学院

3005错误怎么解决

0
悬赏园豆:200 [已解决问题] 解决于 2009-07-21 23:31

您好,我的一个网站经常出现3005错误的,查看事件都是类型下面的问题,请高手帮忙看看!

 
事件代码: 3005 
事件消息: 发生了未处理的异常。 
事件时间: 2009/7/17 16:27:00 
事件时间(UTC): 2009/7/17 8:27:00 
事件 ID: f76cadc46c5c49db96ffeffd22d87e5c 
事件序列: 5 
事件匹配项: 1 
事件详细信息代码: 0 
 
应用程序信息: 
    应用程序域: /LM/W3SVC/5/ROOT-1-128922928153977985 
    信任级别: Full 
    应用程序虚拟路径: / 
    应用程序路径: E:\web\ 
 
进程信息: 
    进程 ID: 4592 
    进程名: w3wp.exe 
    帐户名: NT AUTHORITY\NETWORK SERVICE 
 
异常信息: 
    异常类型: InvalidOperationException 
    异常消息: ExecuteScalar 要求已打开且可用的连接。连接的当前状态为正在连接。 
 
请求信息: 
    请求路径: /Manager/Module/Order/Declaration/order.aspx 
    用户主机地址: 121.35.21.233 
    用户: 111
    是否已经过身份验证: True 
    身份验证类型: Forms 
    线程帐户名: NT AUTHORITY\NETWORK SERVICE 
 
线程信息: 
    线程 ID: 7 
    线程帐户名: NT AUTHORITY\NETWORK SERVICE 
    是否正在模拟: False 
    堆栈跟踪:    在 System.Data.SqlClient.SqlConnection.GetOpenConnection(String method)
   在 System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute(String method, SqlCommand command)
   在 System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async)
   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   在 System.Data.SqlClient.SqlCommand.ExecuteScalar()
   在 DB.Database.Exists(String SqlText, Int32& TempID)
   在 Info.SQLServerDAL.common.Exists(String strTable, String strWhere, Int32& TempID)
   在 Info.BLL.common.Exists(String strTable, String strWhere, Int32& TempID)
   在 WebApp.Manager.Module.Order.Declaration.order.SendOrder(DateTime n)
   在 WebApp.Manager.Module.Order.Declaration.order.Button1_Click(Object sender, EventArgs e)
   在 System.Web.UI.WebControls.Button.OnClick(EventArgs e)
   在 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
   在 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
   在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
   在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
   在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Asharp的主页 Asharp | 初学一级 | 园豆:0
提问于:2009-07-20 22:11
< >
分享
最佳答案
0

3005 是由于你的程序出现InvalidOperationException异常;

所以重点关注:

“ExecuteScalar 要求已打开且可用的连接连接的当前状态为正在连接”这句话

你需要在数据访问中捕获InvalidOperationException 异常;

在ExecuteScalar执行完毕后,要及时关闭此连接,如果不关闭,下次其他操作用SqlConnection就会异常,你可以先在此操作之前关闭数据库连接,然后再开启,最后关闭

 

Code

 

 

特别是多条记录的ExcuteScalar 的处理过程中,要显式关闭连接,其他操作使用连接时,需要先判定连接是否打开,没有打开的时候再打开,避免试图打开连接的操作。

考虑你的数据库连接串提供的是否是静态的方法,这个要慎重处理。

winzheng | 大侠五级 |园豆:8797 | 2009-07-21 12:39
其他回答(2)
0

看起来好像是打开的连接没有关闭。

你连接数据库部分的代码呢?

邀月 | 园豆:25475 (高人七级) | 2009-07-20 22:24
0

异常消息: ExecuteScalar 要求已打开且可用的连接。连接的当前状态为正在连接。

这里说的挺明白的,应该就是你读取数据时用的数据库连接还未被打开,可能是数据库连接被占满造成的。

难道你打开数据库连接的操作或执行查询的操作是异步实现的?能否提供一下这块的代码?

另外请告知一下出现此问题时,你的网站大概在线人数吧,也许可以从优化方面入手,解决此问题。

还有,你可以自己检查一下代码有没有下列问题:

数据库连接未Open()(这个错误一般在编写时就能排除)

数据库连接在其他地方被Close()(这在多处共享一个数据库连接时容易出现)

打开数据库与执行查询的代码不在同一线程

斯克迪亚 | 园豆:4124 (老鸟四级) | 2009-07-21 00:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册