技术开发 频道

利用HttpModule做流量记录


【IT168技术文档】

  方案的瓶颈:
  1、加载入了Web请求,给处理增加负担。
  2、每次请求页面都会产生巨大的记录数据。保存记录数据时整体性能的损耗。
  3、由于流量记录HttpModule异常引发网站请求异常存在危险性。

  方案的优势:
  1、最大程度保护记录准确性。用户信息基于Session中获取。
  2、无需往实际页面中增加任何代码。也无需让所有页面继承任何一个基类。保持网站业务逻辑代码和统计代码分离。
  3、可以记录WebService请求(必须开启服务方法Session才能获取保存在Session中的信息)。

  我采用降低瓶颈的解决方案
  数据记录。
  最终采用记录入Sql2005数据库,利用异步处理完成并启用连接池。
/// <summary> /// 记录流量信息 /// </summary> /// <param name="flowEntity">流量记录实体</param> public void Record(FlowEntity flowEntity) { //判断连接是否为打开状态 if (_conn.State != ConnectionState.Open) _conn.Open(); string strCommand = "记录语句"; SqlCommand dbcommand = new SqlCommand(strCommand, _conn); dbcommand.CommandType = CommandType.Text; dbcommand.Parameters.Add(添加记录需要的参数); try { dbcommand.BeginExecuteNonQuery(new AsyncCallback(dbcommandCallBack), dbcommand); } catch { } } public void dbcommandCallBack(IAsyncResult result) { try { SqlCommand dbcommand = (SqlCommand)result.AsyncState; dbcommand.EndExecuteNonQuery(result); } catch { } }
  web.config 连接字符串
<add name="FoutorWebSiteFlowStatisticsDatabaseConnectionString" connectionString="Data Source=YourServer;Initial Catalog=FoutorWebSiteFlowStatisticsDatabase;Integrated Security=True;Asynchronous Processing=true;Pooling=true;MultipleActiveResultSets=true;" providerName="System.Data.SqlClient" />
0
相关文章