在asp.net 中,由于经常很多人访问页面。有时会出现这样的bug。
查了下,似乎是因为在多线程中,sqlconnection.close 后,又被dispose后,才会出现这样问题。不知道各位大神在遇到这样的问题都是怎么解决。或者在多线程使用sqlconnection时,对于sqlconnection线程安全方面都有什么样的解决方案。不胜感激。谢谢。
查询语句错了吧~~~
http://tianmoboping.blog.163.com/blog/static/157395322012012112914202/
请大神看下这篇文章。他只说了原因,但是该怎么解决,还是不明白。
@Mr Li:
1、 如果是版本不对的话,首先查看iis运行的Framework版本,然后查看发布的Framework版本,如果不同,那么就修正为相同;
2、如果你在使用connection后,用了Connection.Close方法,那么注释掉这句;
3、将连接的写法修改为using的方式,自动释放资源,而不要手动的去Close~
大概就是这意思,你试试~
datatable 加载完就断开连接所以跟sqlconnection没关系,你的错误是由于查询语句引起的,没有title这一列。
http://tianmoboping.blog.163.com/blog/static/157395322012012112914202/
请大神看下这篇文章。他只说了原因,但是该怎么解决,还是不明白。
@Mr Li: 这个问题真没有遇到过,帮不了你,但别人建议微软发布的SqlHelper,我也经常用这个。
人过多的时候,报的错不是这样子的错误,亲。我这里遇到过负载过多的情况。就是用户登不进去。很慢。但是不会出现这种问题的。
那为什么有时候会出现这种问题,刷新一下就好了,sql 中有该列的。那会不会是因为一个人登陆的时候,某个页面在sqlconection.close的时候,(在上个页面还没有sqlconection.dipose),另一个页面从连接池获取了这个sqlconection,然后又执行了查询,紧接着上个页面执行了sqlconection.dipose,然后另一个页面的sqlconection就被回收了,从而出现山面的问题?
@Mr Li: 这个链接数据库应该是封装起来的。我不知道你的怎么写的。我的是每次查询结束都会dispose的
http://tianmoboping.blog.163.com/blog/static/157395322012012112914202/
请大神看下这篇文章。他只说了原因,但是该怎么解决,还是不明白。
using(SqlConnection conn = new SqlConnection())
{
if(inTab.Rows.Count == 1)
{
inTitle = inTab.Rows[0]["title"].ToString();
}
}
按这种方式用。