asp.net奇怪的异常每隔三分钟左右
我试图创建一个非常简单的aspx页面,从
mysql数据库中提取一些数据.
页面构建没有问题. (aspx只包含默认表单和div只是为了打印一些数据) Default.aspx.vb: Imports System.Configuration Imports System.Data Imports MySql Imports MySql.Data Imports MySql.Data.MySqlClient Partial Class _Default Inherits System.Web.UI.Page Private cnstr As String = ConfigurationManager.ConnectionStrings.Item("thisdb").ConnectionString Protected Sub Page_Load(sender As Object,e As System.EventArgs) Handles Me.Load Dim cn As New MySqlConnection(cnstr) Dim cmd As New MySqlCommand("SELECT user_firstname,user_lastname FROM tb_users;",cn) cmd.CommandType = CommandType.Text Dim dt As DataTable dt = GetDataTableMySQL(cmd) If dt.Rows.Count > 0 Then testdiv.InnerHtml = dt.Rows(0).Item("user_firstname") testdiv.InnerHtml += "<br/>" & dt.Rows(0).Item("user_lastname") End If dt.Dispose() cmd.Dispose() cn.Dispose() End Sub Private Function GetDataTableMySQL(ByVal cmd As MySqlCommand) As DataTable Dim da As New MySqlDataAdapter() Dim dt As New DataTable() Try cmd.Connection.Open() da.SelectCommand = cmd da.Fill(dt) Return dt Catch ex As MySqlException Throw ex Catch ex As Exception Throw New Exception(ex.Message) Finally cmd.Connection.Close() da.Dispose() End Try End Function End Class Web.config文件: <?xml version="1.0"?> <!-- For more information on how to configure your ASP.NET application,please visit http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <system.web> <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"> <assemblies> <add assembly="MySql.Data,Version=6.4.4.0,Culture=neutral,PublicKeyToken=C5687FC88969C44D"/> </assemblies> </compilation> <customErrors mode="Off"/> </system.web> <connectionStrings> <add name="thisdb" connectionString="Server=localhost;Database=mydatabase;Uid=mydbuser;Pwd=dbpasswd;CharSet=UTF8; "/> </connectionStrings> </configuration> 当我浏览页面URL时,它运行得很好. 现在出现了烦人的问题…… 如果我让页面空闲大约3-4分钟,然后点击刷新我总是得到以下异常:
如果我再次点击刷新,页面再次正常运行……依此类推. 在网上搜索了几个小时后,唯一听起来就是这样 Connector / Net文档说:
好.即使这是我的问题, 有任何想法吗?这真让我抓狂! UPDATE Private Function GetDataTableMySQL(ByVal cmd As MySqlCommand) As DataTable Dim dt As New DataTable Using da = New MySqlDataAdapter(cmd) da.Fill(dt) End Using Return dt End Function (它没有解决问题,但我认为现在展示代码看起来很有用) 异常的堆栈跟踪更改为以下内容:
更新2阅读Connector/Net Connection String Options Reference后 Pooling=false; 然后我测试了将池化选项更改为: Pooling=no; 通过测试Pooling选项,页面永远不会有效! 解决方法
它可能无法解决问题,但对于DataAdapter.Fill您不需要自己打开和关闭连接.
另外,我怀疑在Try块中使用Return – 你可以做更多的事情 Private Function GetDataTableMySQL(ByVal cmd As MySqlCommand) As DataTable Dim dt As DataTable = Nothing Using da = New MySqlDataAdapter() da.fill(dt) End Using Return dt End Function 并检查返回值IsNot Nothing是否确保它有效. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 新加载页面而不是缓存
- asp.net – 使用javascript调整大小的Gridview列
- asp.net-mvc – 在.Net MVC WS-Federation站点中阻止XmlHtt
- asp.net-mvc-3 – ASP.NET MVC 3一对多无法更新桥表
- asp.net-mvc – 使用文件扩展名创建ActionResult的推荐方法
- 如何在ASP.NET MVC中执行图像的Ajax / JQuery上载?
- 在asp.net应用程序中管理与数据库的连接
- ASP.NET WebSite发布与复制?
- asp.net – 有人可以解释VistaDB吗?
- asp.net – 如何在迭代字典项时更新值?