今天去客户那里出嗅了!为什么在我机器上跑得网站,到客户那里就弹出错误呢!有哪位大虾帮忙下! 情况是这样的!我到客户那里!他们给我了一台没有装IIS的XP系统的机器,我把IIS装了!不过好像有点问题似的!我还装了.NET框架2.0 装好了SQL SERVER2000我开始运行我的网站,登陆没有问题,但是进入的时候第一个选项功能弹出错误页面,其他选项功能正常,可是这个页面在我的机器上跑是没有问题的!而且报的错误是与数据库有关的错误。 为什么呢!大家能告诉我吗?首先是我的程序问题,还是客户电脑的系统配置问题呢!能告诉我吗! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 类里方法 public DataTable Tb(string sql) { DataTable table; SqlConnection Conn = new SqlConnection(SqlClientInfo.ConStr); Conn.Open(); SqlDataAdapter da = new SqlDataAdapter(sql,Conn); DataSet ds = new DataSet(); da.Fill(ds,"table"); table = ds.Tables["table"]; 报了这条代码错误!是红色的! Conn.Close(); return table; }页面的部分代码 protected void Page_Load(object sender, EventArgs e) { if(this.IsPostBack==false) { if (dllKey.SelectedValue == "时间段") { this.BTTB(); } else { this.BraTB(); Response.Write("<meta http-equiv=\"Refresh\"content=\"10\">"); } } } public void BraTB() { string sql = "Select *,(case 是否回复 when 1 then '已处理' else '未处理' end)r From tb_sms_mo Where " + this.dllKey.SelectedValue + " Like '%" + txtKey.Text + "%' and (创建时间 BETWEEN CONVERT(datetime, LEFT(GETDATE(), 10) + ' 00:00:00.000') AND CONVERT(datetime, LEFT(GETDATE(), 10) + ' 00:00:00.000') + 1)ORDER BY 记录编号 desc "; this.MyDataGrid.DataSource = (new SqlDB()).Tb(sql); this.MyDataGrid.DataBind(); } 想强调一点!我在IIS那里直接浏览我整个的网站的时候是无法浏览的,我就到LOGIN.aspx这个页面浏览就可以浏览,我怀疑是不是我的IIS没有配好!不过我进去整个网站的时候就只有第一个选项功能页面报错,其他的不报错!而且其他的页面也是调用这个类里的方法,为什么就不报错呢!(是在客户机器上跑)在自己的机器上跑没有问题!类里方法 public DataTable Tb(string sql) { DataTable table; SqlConnection Conn = new SqlConnection(SqlClientInfo.ConStr); Conn.Open(); SqlDataAdapter da = new SqlDataAdapter(sql,Conn); DataSet ds = new DataSet(); da.Fill(ds,"table"); table = ds.Tables["table"]; 报了这条代码错误!是红色的! Conn.Close(); return table; } table = ds.Tables["table"]; 报了这条代码错误!是红色的! 试试换个名字,如table = ds.Tables["table1"]; table = ds.Tables["table1"]; 或者不适用DataSet,直接da.Fill(table);看看 看了下你说的报错的地方 仔细检查你的Sql 语句 断点调试一下 还有 那么长的 sql语句 还那么多单双引号 建议换做 存储过程 table = ds.Tables["table"]; 报了这条代码错误!是红色的! 报什么错?你的sql语句在数据库里面返回什么? 会不会是数据库的连接字符串被编译了?你是在客户处重装的数据库,因此连接字符串有可能与你本机不一致,而如果连接字符串放在 ASPX.cs文件中将被编译,无法在客户端修改 XP 的IIS说实话,没有配置成功过,一搞就错误500,在网上不知道找了多少办法都没有用,我都放弃了~~~郁闷。 就是查询一条数据类似如此!41 CMCC 0 15837101710 10690001 10 投诉 2009-03-09 13:46:36.000 NULL 0 0 未处理 你代码里把异常抛出来就知道了public DataTable Tb(string sql) { DataTable table; SqlConnection Conn = new SqlConnection(SqlClientInfo.ConStr); try { Conn.Open(); SqlDataAdapter da = new SqlDataAdapter(sql, Conn); DataSet ds = new DataSet(); da.Fill(ds, "table"); table = ds.Tables["table"]; return table; } catch { throw; } finally { Conn.Close(); } } 会不会是编码问题呢?你的http请求有没有中文参数没有编码的get提交? 建议用原版的XP系统,ghost版本的90% 都配置不成功 正常程序应该写好 try catch 和 写 Log ...... 呵呵,不知道你怎么吧数据库导入到用户机器上的,如果是恢复备份的话,有些默认的字段的值会变,最好看一下你的那个datatable涉及的表和你的测试环境的是不是有不同,比如字段类型,长度,默认值等等还有MS-SQL需要在“外围应用配置器”里配置下远程连接属性 呵呵,不知道你怎么吧数据库导入到用户机器上的,如果是恢复备份的话,有些默认的字段的值会变,最好看一下你的那个datatable涉及的表和你的测试环境的是不是有不同,比如字段类型,长度,默认值等等还有MS-SQL需要在“外围应用配置器”里配置下远程连接属性 很有可能是SQL语句中 CONVERT(datetime 这里转错了,导致查询失败,这是因为你的机器和客户的机器注册表时间格式不同引起的把你的注册表时间格式和客户的注册表时间格式修改成相同的设置就可以了! da.Fill(ds,"table"); table = ds.Tables["table"]; //把这句去掉试试, table = ds.Tables[0]; Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Control Panel\International]"iCountry"="86""iCurrDigits"="2""iCurrency"="0""iDate"="2""iDigits"="2""iLZero"="0""iMeasure"="0""iNegCurr"="2""iTime"="1""iTLZero"="0""Locale"="00000804""s1159"="上午""s2359"="下午""sCountry"="中华人民共和国""sCurrency"="¥""sDate"="-""sDecimal"=".""sLanguage"="CHS""sList"=",""sLongDate"="yyyy'年'M'月'd'日'""sShortDate"="yyyy-M-d""sThousand"=",""sTime"=":""sLongDate16"="dddd', 'MMMM' 'dd', 'yyyy""iTimePrefix"="1""iCentury"="0""iDayLZero"="1""iMonLZero"="1""iChinaYear"="0""iCalendar"="1""sTimeFormat"="H:mm:ss""sMonDecimalSep"=".""sMonThousandSep"=",""iNegNumber"="1""sNativeDigits"="0123456789""NumShape"="1""iCalendarType"="1""iFirstDayOfWeek"="6""iFirstWeekOfYear"="0""sGrouping"="3;0""sMonGrouping"="3;0""sPositiveSign"="""sNegativeSign"="-" 全部拷下来保存为.reg的文件,双击就可以 不知道楼主挂了没 。。 关注 不行 try catch 反正别报红色错误吓到客户 你看一下客户数据库里面是否有数据,肯定是你拼SQL语句的时候出问题了. table = ds.Tables["table"].Copy()要不就是你数据库里一些SP,FU,VIEW之类的东西少了 建议不要使用 XP 的 IIS 功能,XP专业版的IIS只能同时支持10个连接,多了就会报告HTTP 500的错误了。另外,在XP的本机浏览器中浏览一下页面,看看他的具体错误是什么。 几个可以尝试的方案:1..net框架,iis安装顺序有讲究,先装iis,后装.net框架,不然莫名其妙的错误很多2.xp的iis对.net2.0的支持很多时候都出错,如果条件允许,建议用win2003+iis63.ghost版本的xp关闭了很多服务,配置网站出错很正常4.客户非要用xp做服务器,你推荐他装一个WM虚拟机,在虚拟机上面弄个win2003+iis65.用sql server 2005 express 版本替换sql server2000试试,2000要收费的,2005express是免费 connection string or setting vs2008在水晶报表中如何自动补充空行,意思就是固定详细信息的总高度 xml讨论下! 有关WinForm C#中的listView中的SelectedIndexChange属性? 怎样把"变成" DATAGRID的最后一行为什么点了没反应呢 DataGrid不能显示数据? 各位大侠,仿QQ自行隐藏,鼠标放在FORM上其它控件时,如何避免产生leave事件 水晶报表: 对于字符串而言缓冲区太小或缺少空字节 一个简单的问题:如何判断一个undefined value的值?? 日期格式问题? xml分页......... 大家帮我看看这个错误是怎么出来的?
类里方法
public DataTable Tb(string sql)
{
DataTable table;
SqlConnection Conn = new SqlConnection(SqlClientInfo.ConStr);
Conn.Open();
SqlDataAdapter da = new SqlDataAdapter(sql,Conn);
DataSet ds = new DataSet();
da.Fill(ds,"table");
table = ds.Tables["table"]; 报了这条代码错误!是红色的!
Conn.Close();
return table;
}
页面的部分代码
protected void Page_Load(object sender, EventArgs e)
{
if(this.IsPostBack==false)
{
if (dllKey.SelectedValue == "时间段")
{ this.BTTB();
}
else
{ this.BraTB();
Response.Write("<meta http-equiv=\"Refresh\"content=\"10\">");
}
}
}
public void BraTB()
{
string sql = "Select *,(case 是否回复 when 1 then '已处理' else '未处理' end)r From tb_sms_mo Where " + this.dllKey.SelectedValue + " Like '%" + txtKey.Text + "%' and (创建时间 BETWEEN CONVERT(datetime, LEFT(GETDATE(), 10) + ' 00:00:00.000') AND CONVERT(datetime, LEFT(GETDATE(), 10) + ' 00:00:00.000') + 1)ORDER BY 记录编号 desc ";
this.MyDataGrid.DataSource = (new SqlDB()).Tb(sql);
this.MyDataGrid.DataBind();
}
在自己的机器上跑没有问题!类里方法
public DataTable Tb(string sql)
{
DataTable table;
SqlConnection Conn = new SqlConnection(SqlClientInfo.ConStr);
Conn.Open();
SqlDataAdapter da = new SqlDataAdapter(sql,Conn);
DataSet ds = new DataSet();
da.Fill(ds,"table");
table = ds.Tables["table"]; 报了这条代码错误!是红色的!
Conn.Close();
return table;
}
试试换个名字,如table = ds.Tables["table1"]; table = ds.Tables["table1"]; 或者不适用DataSet,直接da.Fill(table);看看
断点调试一下
还有 那么长的 sql语句 还那么多单双引号 建议换做 存储过程
报什么错?你的sql语句在数据库里面返回什么?
你是在客户处重装的数据库,因此连接字符串有可能与你本机不一致,而如果连接字符串放在 ASPX.cs文件中将被编译,无法在客户端修改
类似如此!41 CMCC 0 15837101710 10690001 10 投诉 2009-03-09 13:46:36.000 NULL 0 0 未处理
public DataTable Tb(string sql)
{
DataTable table;
SqlConnection Conn = new SqlConnection(SqlClientInfo.ConStr);
try
{
Conn.Open();
SqlDataAdapter da = new SqlDataAdapter(sql, Conn);
DataSet ds = new DataSet();
da.Fill(ds, "table");
table = ds.Tables["table"];
return table;
}
catch
{
throw;
}
finally
{
Conn.Close();
}
}
把你的注册表时间格式和客户的注册表时间格式修改成相同的设置就可以了!
table = ds.Tables[0];
"iCountry"="86"
"iCurrDigits"="2"
"iCurrency"="0"
"iDate"="2"
"iDigits"="2"
"iLZero"="0"
"iMeasure"="0"
"iNegCurr"="2"
"iTime"="1"
"iTLZero"="0"
"Locale"="00000804"
"s1159"="上午"
"s2359"="下午"
"sCountry"="中华人民共和国"
"sCurrency"="¥"
"sDate"="-"
"sDecimal"="."
"sLanguage"="CHS"
"sList"=","
"sLongDate"="yyyy'年'M'月'd'日'"
"sShortDate"="yyyy-M-d"
"sThousand"=","
"sTime"=":"
"sLongDate16"="dddd', 'MMMM' 'dd', 'yyyy"
"iTimePrefix"="1"
"iCentury"="0"
"iDayLZero"="1"
"iMonLZero"="1"
"iChinaYear"="0"
"iCalendar"="1"
"sTimeFormat"="H:mm:ss"
"sMonDecimalSep"="."
"sMonThousandSep"=","
"iNegNumber"="1"
"sNativeDigits"="0123456789"
"NumShape"="1"
"iCalendarType"="1"
"iFirstDayOfWeek"="6"
"iFirstWeekOfYear"="0"
"sGrouping"="3;0"
"sMonGrouping"="3;0"
"sPositiveSign"=""
"sNegativeSign"="-"
不行 try catch 反正别报红色错误吓到客户
1..net框架,iis安装顺序有讲究,先装iis,后装.net框架,不然莫名其妙的错误很多2.xp的iis对.net2.0的支持很多时候都出错,如果条件允许,建议用win2003+iis63.ghost版本的xp关闭了很多服务,配置网站出错很正常4.客户非要用xp做服务器,你推荐他装一个WM虚拟机,在虚拟机上面弄个win2003+iis65.用sql server 2005 express 版本替换sql server2000试试,2000要收费的,2005express是免费