问题一:
    内网跟外网的程序用的都是同一个数据库,但是在内网测试的时候没有发现任何问题,当把问题放在外网时,就会有很多问题,而且都是很古怪的问题,比如说:“未将对象引用设置到对象的实例”,“sqlclien异常:未可知错误”,“字段"XXX"在表中不存在”,“在关闭连接之前先关闭DataReader”等等,而且这些错误信息都是随机的,有时候是这一条,有时候是另外的,不知道是什么原因造成的?我个人认为是外网的IIS并发连接数太多而引发这些异常的,不知道大家是怎么看待这个问题的呢?问题二:
    程序页面用了Iframe,Iframe中有几个页面,其中一个是用DataGrid显示数据的,称为页面A,一个是显示DataGrid中某一条信息的详细信息,称为页面B,但是在页面B点“后退”按钮返回页面A时,速度非常非常慢,很明显是在返回页面A时,页面A重新Load数据,怎样才能解决这个问题呢?问题三:
    描述同问题二,在返回页面A时,页面A的数据排序会不一样,就是说点击页面A DataGrid中第5行进去页面B查看详细信息后再返回页面A时,刚才在DataGrid第5行的信息有可能已经不是第5行了,而是在其它行或者DataGrid的其它页了,个人认为是Sql语句没有指定Order by 的原因,但SQL它不是会自己默认排序的吗?

解决方案 »

  1.   

    问题一,等待高手。
    问题二,用缓存。这个在微软的在线课堂的asp.net的性能提高的开发技巧里面讲得挺多。
    问题三,既然你是重新Load数据,排序不一样就有理由了,数据变了嘛。
      

  2.   

    问题二可以使用缓存,我以前是把所有数据放到dataset中,然后每次页面加载从dataset中读取数据,可能是数据量很小所以没感觉到慢
    问题三建议你还是用order by进行控制,正像楼上说的因为你是重新load,数据的排序肯定不一样
      

  3.   

    问题一:使用连接池来降低数据连接压力,程序尽量捕捉能预见的异常,尽量少用DataReader,因为它是在线数据阅读,而且很难释放干净,建议全部改为dataset或datatable;速度会明显提高;问题二:缓存,所有数据放到dataset中,或者干脆不重新加载数据,比如把绑定操作放在
    if(!ispostback)
    {
    //绑定
    }问题三:同上
      

  4.   

    "问题一:使用连接池来降低数据连接压力,程序尽量捕捉能预见的异常,尽量少用DataReader,因为它是在线数据阅读,而且很难释放干净,建议全部改为dataset或datatable;速度会明显提高;"不赞同。用不用连接池问题不,除非你考虑的控制比较精细,对于相同的连接字符串,系统会自动为你维护连接池的。如果从性能上考虑,用DataReader是最好的实现方案,它远远比DataSet或DataTable之流快得多。通过数据适配器对DataSet之类的填充,底层仍然是通过使用DataReader实现,并且这个过程中将会产生大量的DataRow对象,性能损失较大。"“未将对象引用设置到对象的实例”,“sqlclien异常:未可知错误”,“字段"XXX"在表中不存在”,“在关闭连接之前先关闭DataReader”",对于这些问题,应该仔细检查一下代码的实现是否有问题,另外看看是不是防火墙的影响,有时候,安装如Norton之类的杀毒软件,也有可能引起这类问题问题三中,采用模态窗口是一个好主意。对于问题二,采用缓存是比较好的方案,ASP.NET中对缓存的支持非常方便,不多说问题三,
      

  5.   

    问题一:使用连接池来降低数据连接压力,用DataReader,急时释放干净问题二:缓存、if(!ispostback)
    建议看一下微软的在线课堂的asp.net的性能提高的开发技巧问题三:
    if(!ispostback)
    {
    //绑定
    }
    SQL语句排序
      

  6.   

    1.数据库配置是否有问题,多使用存储过程.
    2,3 除了楼上的意见之外,使用VIEWSTATE 可以帮你解决问题.
    建议:如果数据只读的话而不进行其他操作的知,尽量使用DataReader,但要记得及时打开和关闭连接
    如果有其他操作,就最好使用DataTable,DataSet,这种方式,可以会降低一些内存方面效率,但更多的会给你带来方便,我个人认为,现在效率并不是排在第一位.(而且,当数据较小,这种效率损失可以不记)
    纯属个人意见.各位别打人啦..
      

  7.   

    WilliamFire(寒枫天伤) :你说问题一有可能会受到防火墙的影响,但在内网上也有装防火墙的啊!
      

  8.   

    根据本人经验
    1.楼主说的错误提示多半是代码问题。若负载超过服务器能力,提示信息不是这样。
    2。可以进行测试,放在外网先不公布访问URL,就你们几个人测试,看看是不是还有你说的问题,若没有,再公开让众人测试,看看问题是否出现。
    3。提示一下,从开发版本到发布版本,一般来说有相关配置改变,比如数据库密码,服务器名称等,造成的不一至所引起的错误
      

  9.   

    hchxxzx(好像NET入了一点门):但是问题一出现时,再刷新就正常了
      

  10.   

    那极有可能是数据库权限的问题,或者干脆就是数据库出现问题了.
    我有个网站用ORACLE,原来运行了2年,后来因为安全的原因,对数据库用户的权限做了一定的调整,到外出问题,而且是非常变态的问题.
    如果你有条件,换一个数据库(换另一台机)试试看
      

  11.   

    qunxingfyb(新青年) 说的很正确,大多数错误是连接速度的原因,还有就是这些错误:“未将对象引用设置到对象的实例”,“字段"XXX"在表中不存在”,“在关闭连接之前先关闭DataReader”
    最可能的是代码的问题。
      

  12.   

    对于问题1我觉得可以去查查看iis的日志文件,听说路由也能引起错误,如果日志里面都是2XX打头的,那么说明iis是正确的而程序的健壮性还不够,多半是网站与数据库之间不太平。
      

  13.   

    if(!ispostback)
    {
    //绑定
    }
    可以解决2和3,因为不重新绑定