我网上查的,因为我的数据库没有关闭,我查了一下,果然有活动连接,但我使用的“动软生成器”生成的工厂模式代码,里面的连接数据库的操作类我也看了,都connection.Close();,我代码也按照它的规范写的,我就不清楚到底什么地方没有connection.Close()了,我把代码贴出来给你们看下
---------------这个是查询的那个
/// <summary>
/// 获取热点新闻(根据点击率前15条)
/// </summary>
/// <returns></returns>
public DataSet NewsSelectCount()
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT TOP 15 nId=(SELECT SUM(1) FROM dbo.sz_News WHERE nId<=a.nId),nid AS oldId,");
strSql.Append(" nTitle,nCreateTime,nForm,nAuthor,nCount,nContent");
strSql.Append(" FROM dbo.sz_News a ORDER BY a.nCount DESC"); return DbHelperSQL.Query(strSql.ToString());
}---------------------然后前台获取数据,我是使用jquery的ajax获取数据的,顺便问一下,这种方式好不好的?会不会对网站有什么影响?
//获取热点新闻function NewsSelectCount()
{
var type="NewsSelectCount";
$('#newsCount').html('<div align="center"><img src="Images/4.gif" /><font color="#006699"><br/>正在加载数据...</font></div>');
$.ajax
({
type: "post",
url: "JqueryAshx/NewsHandler.ashx",//操作NewsHandler.ashx新闻处理程序
data: "type="+type,
success: function(msg){
$('#newsCount').css("display","none");
$('#newsCount').fadeIn("slow");
$('#newsCount').html(msg);
}
});
}-------------------NewsHandler.ashx中的
/// <summary>
/// 获取热点新闻(根据点击率前15条)
/// </summary>
/// <returns></returns>
public string NewsSelectCount()
{
int top = 15;
DataSet ds = new DataSet();
ds = news.NewsSelectTop(top);
string html = "";
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string alt = ds.Tables[0].Rows[i]["nTitle"].ToString();
string title = ds.Tables[0].Rows[i]["nTitle"].ToString();
if (title.Length > 8)
{
title = Common.getSubString(title, 14);
}
html +=
"<img src='Images/ico-2.gif' />" +
"<a href='" + url + ds.Tables[0].Rows[i]["nId"].ToString() + ".html' title='" + alt + "' class='my' target='_blank'>" +
(i + 1) + " " + title + "</a>" +
"<div class='bottomcss'></div>";
}
}
else
{
html += "<div align='center'><font color='#006699'>没有数据,请添加数据</font></div>";
}
return html;
}大家给我看下,到底什么原因,对了,我也使用了伪静态技术,不知道有没有关系的,不过我刷新aspx文件和html,刷新次数多都会提示“目前访问网站的用户过多。”的。
---------------这个是查询的那个
/// <summary>
/// 获取热点新闻(根据点击率前15条)
/// </summary>
/// <returns></returns>
public DataSet NewsSelectCount()
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT TOP 15 nId=(SELECT SUM(1) FROM dbo.sz_News WHERE nId<=a.nId),nid AS oldId,");
strSql.Append(" nTitle,nCreateTime,nForm,nAuthor,nCount,nContent");
strSql.Append(" FROM dbo.sz_News a ORDER BY a.nCount DESC"); return DbHelperSQL.Query(strSql.ToString());
}---------------------然后前台获取数据,我是使用jquery的ajax获取数据的,顺便问一下,这种方式好不好的?会不会对网站有什么影响?
//获取热点新闻function NewsSelectCount()
{
var type="NewsSelectCount";
$('#newsCount').html('<div align="center"><img src="Images/4.gif" /><font color="#006699"><br/>正在加载数据...</font></div>');
$.ajax
({
type: "post",
url: "JqueryAshx/NewsHandler.ashx",//操作NewsHandler.ashx新闻处理程序
data: "type="+type,
success: function(msg){
$('#newsCount').css("display","none");
$('#newsCount').fadeIn("slow");
$('#newsCount').html(msg);
}
});
}-------------------NewsHandler.ashx中的
/// <summary>
/// 获取热点新闻(根据点击率前15条)
/// </summary>
/// <returns></returns>
public string NewsSelectCount()
{
int top = 15;
DataSet ds = new DataSet();
ds = news.NewsSelectTop(top);
string html = "";
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string alt = ds.Tables[0].Rows[i]["nTitle"].ToString();
string title = ds.Tables[0].Rows[i]["nTitle"].ToString();
if (title.Length > 8)
{
title = Common.getSubString(title, 14);
}
html +=
"<img src='Images/ico-2.gif' />" +
"<a href='" + url + ds.Tables[0].Rows[i]["nId"].ToString() + ".html' title='" + alt + "' class='my' target='_blank'>" +
(i + 1) + " " + title + "</a>" +
"<div class='bottomcss'></div>";
}
}
else
{
html += "<div align='center'><font color='#006699'>没有数据,请添加数据</font></div>";
}
return html;
}大家给我看下,到底什么原因,对了,我也使用了伪静态技术,不知道有没有关系的,不过我刷新aspx文件和html,刷新次数多都会提示“目前访问网站的用户过多。”的。
好似XP限制5个连接
/// <summary>
/// 执行查询语句,返回DataSet
/// </summary>
/// <param name="SQLString">查询语句</param>
/// <returns>DataSet</returns>
public static DataSet Query(string SQLString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
}
catch (System.Data.SqlClient.SqlException ex)
{
throw new Exception(ex.Message);
}
finally
{
connection.Close();
}
return ds;
}
}
也会出现用户过多的提示
Windows 2003 不存在限制
参考
难道用了ajax就会产生很多连接吗?
再改大些就不管用了。连接数不只是客户端的个数,还包括了你的程序中是否采用了Frameset。
如果Frmameset中包含了4个Frame那么,不修改注册表的情况下,
连接数为3个时,就会报错的。
具体用法百度上有
引用 3个JS文件,1个css文件,10个图片,那某个用户打开这个页面时,至少要向IIS提交14个IIS连接.而IIS的连接数一般都设定有一个连接数上限.当超过这个上限,服务器就会报错.
如果是虚拟主机,商家允许的上限就更少了.解决办法:
1.在一个页面中尽量减少导致IIS连接的东东,多个小图片小图标可以合成一张图,然后用CSS显示大图的不同区域.
2.优化代码,让每个连接能尽快地完成任务并断开.