ASP.NET中的错误处理和程序优化
错误的类型:
A。分析程序错误:
1。语法错误:语法有问题
2。逻辑错误:除0错误、类型不匹配、不正确输出、使用不正确的对象、处理无效的数据
B。编译错误:
使用了不能被语言编译器识别,但ASP.NET能识别的关键字或语句时发生的借误。(生成成功但编译出错)
C。运行时错误(如if...else...考虑不全)
D。配置错误:Web.Config文件出错
错误的处理:
A。使用验证控件
B。编程处理:
1。校验语句(使用checked括住要检查的语句)
2。try...catch...finally
3。Page_Error
4。Application_Error
C。在应用程序配置文件中,为应用程序执行的声明性错误处理(customErrors节点,设定报错页)
提高数据访问性能:
bool CheckIDExisit(string strFileID,string strID) //加载XML后判断节点是否存在
可以改成:
bool CheckIDExisitByXml(string strXml,string strID) //利用已读出的XML字符串直接查找,不用每次都加载XML文件
A。逻辑设计建议采用3层。
B。使用最佳的Data Provider(SqlClient,OracleClient,OleDb,Odbc;在访问MSDE/SQL时始终使用SqlClient;在访问Oracle时绐终使用OracleClient)。
C。DataReader和DataSet。只读时用DataReader(通常比DataSet快16%)。
D。ExcuteNonQuery和ExecuteScalar。只更新数据时用ExecuteNonQuery,单个值查询用ExecuteScalar。
E。数据绑定。把页面中的<%# DataBinder.Eval(Container.DataItem,"ColumnName" %>换成<@% ((DataRowView)Container.DataItem)["ColumnName"] %>
F。连接池。及时关闭,完成后显式地关闭连接。
G。使用存储过程。有助防止SQL注入攻击;消除应用与数据库反复调用的成本(事务处理)
服务器控件:
A。注意ViewState和控件数量。
B。如果不使用PostBack功能,请在页面级屏蔽ViewState。
C。使用<%@ Page Trace="true" %>跟踪ViewState的大小。
缓存技术:
经常被访问并变化不大的数据(不要缓存新闻、购物车等;不要缓存个人信息,以防止别人盗用)。
A。输出缓存:配置页的OutPutCache属性
B。数据缓存:
Cache["userName"] = "Terry";
Response.Write(Cache["userName"]); //不能用下标访问,如Cache[0]
Cache.Remove("userName");
C。缓存变量的添加
Cache.Add(...)和Cache.Insert(...)功能相同,但Insert更灵活。
提高性能的实用技巧:
A。不要使用不必要的Session
B。不要使用不必要的Server Control
C。不要使用不必要的ViewState
D。不要用Exception控制程序流程
E。使用存储过程完成数据访问
F。只读数据不要使用DataSet
G。关闭ASP.NET的Debug模式
H。使用ASP.NET Output Cache缓冲数据
I。尽量使用高效的SQL返回需要的DataSet,不要对DataSet进行二次加工。特别不要对DataSet过行大量删除(不如复制部分数据)
J。尽量把查询数据库的次数压缩到最少,尽量控制为1-2次。
K。注意优化数据库查询操作(查询条件;只查询所需要的字段)
L。数据库连接仅在需要时打开,一旦操作完成要显式关闭。
M。在关闭连接时记得删除删除临时对象,并确保关闭任何用户定义事务
N。用DataReader代替DataSet。
O。注意共享那些经过复杂处理或漫长查询才能得到的数据
P。在页面跳转时记得终止当前页面的处理
Q。有大量连接的字符串操作时使用StringBuilder