当前位置:七道奇文章资讯网站建设网站编程
日期:2011-01-18 10:50:00  来源:本站整理

asp.net asax文件利用与计数器实例[网站编程]

赞助商链接



  本文“asp.net asax文件利用与计数器实例[网站编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

application对象(httpapplicationstate 范例,译者按:application对象是httpapplication类的一个属性,是web利用程序全局唯一的,web利用程序第一次有恳求进来的时刻成立的) 是我们在web利用程序内保存全局信息的地方,application对象是一个很便利的保存全局信息的地方,比方保存数据库教程的衔接字符串:

 private void page_load(object sender, system.eventargs e)

{

  string connectionstring = application["connectionstring"].tostring();

  . . . 

}

你也可以在httpapplication类中声明静态成员变量来保存利用程序状况信息,比方,上例中的数据库衔接字符串可以用以下方法保存.

public class global : system.web.httpapplication

{

  public static readonly string connectionstring = "connection information";

   . . .   

}


可以在asp教程.net代码的任何地方拜候该静态成员变量,比方:string connectionstring = global.connectionstring;

非常重要的一点是,假如你想让该字符串可以全局范围内被拜候到,则该字符串必须声明为静态成员变量(你也可以成立一个静态的属性).

相反,假如你在global范例利用普通成员变量(非静态),则只能用来保存恳求状况,举个例子来阐明,下面的代码将在调试窗口中输出全部恳求的处理时间(毫秒)

public class global : system.web.httpapplication

{

       protected datetime beginrequesttime;

       protected void application_beginrequest(object sender, eventargs e)

       {

              beginrequesttime = datetime.now;

       }

       protected void application_endrequest(object sender, eventargs e)

       {

              string messageformat = "elaps教程ed request time (ms) = {0}";

              timespan difftime = datetime.now - beginrequesttime;

              trace.writeline(

                     string.format(messageformat, difftime.totalmilliseconds       ) );                  

       }

       . . .

}


 好,目前让我们回到上面关于保存利用程序状况的话题.那个办法更好的呢:在application对象中保存对象的引用,还是在global类中声明静态成员或属性?各种方法各有优劣.在global类中保存全局静态成员可以使你的数据拜候具有强范例,不象application对象,你不需求举行范例转换,下面的代码阐明了它们的辨别:
dataset cacheddata = (dataset)application[“mydataset”];

string mystring = application[“mystring”].tostring();

dataset cacheddata = global.mydataset;

string mystring  = global.mystring;

  强范例使你的的代码越发清楚和强壮,在利用程序性能要求对比高的情形下,这种方法可以避免运行时范例转换带来的性能丧失.假如你保存的是值范例的数据,强范例还可以避免装箱(boxing)和卸箱(unboxing)所带来的性能丧失.别的,application对象还有因为线程同步造成的锁定所带来的性能上问题.假如你的全局数据只初始化一次,再也不会改变,利用global类中的静态成员可以避免锁定带来的性能丧失.但,假如你采取了这种方法,激烈举荐你利用拜候器(属性),以保证该变量是只读的.假如你既要读又要写在global类中的静态成员变量,记着要保证线程安全.application对象通过获得读写锁已经内涵的供应了线程安全保证.


看一下操纵asax文件做网站计数器

增添了global.asax,app_code文件夹下global.asax.cs,文本文件site_counter.txt并写入数字0,代码辨别以下:

global.asax

<%@ application inherits="linker.global" language="c#" %>
global.asax.cs

using system;
using system.data;
using system.configuration;
using system.web;
using system.web.security;
using system.web.ui;
using system.web.ui.webcontrols;
using system.web.ui.webcontrols.webparts;
using system.web.ui.htmlcontrols;
using system.io;

namespace linker
...{
    /**//// <summary>
    /// global 的择要阐明
    /// </summary>
    public class global : httpapplication
    ...{
        public global()
        ...{
            //
            // todo: 在此处增添构造函数逻辑
            //
         }
        protected void application_start(object sender, eventargs e)
        ...{
            // 在利用程序启动时运行的代码
             streamreader rd = new streamreader(server.mappath("site_counter.txt"));
             application.lock();
             application["site_counter"] = int.parse(rd.readline());
             application.unlock();
             rd.close();
         }
        protected void session_start(object sender, eventargs e)
        ...{
            // 在新会话启动时运行的代码
             application.lock();
             application["site_counter"] = convert.toint32(application["site_counter"]) + 1;
             application.unlock();

             streamwriter wt = new streamwriter(server.mappath("site_counter.txt"), false);
             application.lock();
             wt.writeline(application["site_counter"]);
             application.unlock();
             wt.close();
         }
     }
}
然后在需求显示的页面显示系统 便可以了

比方简单的:

label_site_counter.text = convert.tostring(application["site_counter"]);


  以上是“asp.net asax文件利用与计数器实例[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • ASP利用正则表达式提取内容
  • nginx 反向代理iis支持 ASP脚本设置
  • <b>ASP.NET安全设置防备ASPXSpy</b>
  • Ubuntu Server+Apache 运行 asp.net
  • 怎样ASP.NET MVC调用Delphi开辟的Web报表
  • 学习ASP.NET需求举行的步骤办法
  • ASP.NET脚本过滤-避免跨站脚本攻击
  • Asp WinHttp.WinHttpRequest.5.1 对象利用详解
  • ASP防XSS注入函数
  • Asp 防备CC攻击模块 (Anti-CC.asp)
  • metasploit metasploit 中文系统安装失利问题
  • Ubuntu 11下安装Metasploit Pro 4.0.0
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .