‘ASP.NET’ 分类的存档

[转载]ASP.NET 页生命周期和页面事件处理管道 – DebugLZQ – 博客园. ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤。这些步骤包括 初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及进行呈现。了解页生命周期非常重要,因为这样做您就能在生命周期的合适阶段编写代码,以达 到预期效果。此外,如果您要开发自定义控件,就必须熟悉页生命周期,以便正确进行控件初始化,使用视图状态数据填充控件属性以及运行任何控件行为代码。 (控件的生命周期基于页的生命周期,但是页引发的控件事件比单独的 ASP.NET 页中可用的事件多。) 一般来说,页要经历下表概述的各个阶段。除了页生命周期阶段以外,在请求前后还存在应用程序阶段,但是这些阶段并不特定于页。(有关更多信息,请参见 MSDN:ASP.NET 应用程序生命周期概述。) 我们知道最终我们在服务器上创建的页面对象是通过Page的一个派生类来创建的,这个类通常情况下是看不到的,包括类的名字也不是我们直接指定的。这个类是由ASP.NET服务器根据我们的页面模板文件aspx创建出来的,页面对象的ProcessRequest方法将会启动页面的生成过程。这个过程是通过页面的处理管道来完成的。 下表列出了最常用的页生命周期事件。除了列出的事件外还有其他事件;不过,大多数页处理方案不使用这些事件。而是主要由 ASP.NET 网页上的服务器控件使用,以初始化和呈现它们本身。如果要编写自己的 ASP.NET 服务器控件,则需要详细了解这些阶段。(有关创建自定义控件的信息,请参见MDDN:开发自定义 ASP.NET 服务器控件。 ) 注意事项(来自MSDN): 各个 ASP.NET 服务器控件都有自己的生命周期,该生命周期与页生命周期类似。例如,控件的 Init 和 Load 事件在相应的页事件期间发生。 虽然 Init 和 Load 都在每个控件上以递归方式发生,但它们的发生顺序相反。每个子控件的 Init 事件(还有 Unload 事件)在为其容器引发相应的事件之前发生(由下到上)。但是,容器的 Load 事件是在其子控件的 Load 事件之前发生(由上到下)。 可以通过处理控件的事件(如 Button 控件的 Click 事件和 ListBox 控件的 SelectedIndexChanged 事件)来自定义控件的外观或内容。在某些情况下,可能也需处理控件的 [...]

2012年1月3日12:27 没有评论

[转载]IIS启用Gzip的方法与优缺点分析 – Net之王 – 博客园. 现代的浏览器IE6和Firefox都支持客户端Gzip,也就是说,在服务器上的网页,传输之前,先使用Gzip压缩再传输给客户端,客户端接收之后由浏览器解压显示,这样虽然稍微占用了一些服务器和客户端的CPU,但是换来的是更高的带宽利用率。 现代的浏览器IE6和Firefox都支持客户端Gzip,也就是说,在服务器上的网页,传输之前,先使用Gzip压缩再传输给客户端,客户端接收 之后由浏览器解压显示,这样虽然稍微占用了一些服务器和客户端的CPU,但是换来的是更高的带宽利用率。对于纯文本来讲,压缩率是相当可观的。如果每个用 户节约50%的带宽,那么你租用来的那点带宽就可以服务多一倍的客户了。 IIS6已经内建了Gzip压缩的支持,可惜,没有设置更好的管理界面。所以要打开这个选项,还要费些功夫。 首先,如果你需要压缩静态文件(HTML),需要在硬盘上建一个目录,并给它“IUSR_机器名”这个用户的写权限。如果压缩动态文件 (PHP,asp,aspx)就不需要了,因为它的页面是每次都动态生成的,压缩完就放弃。然后在IIS管理器中,“网站”上面右键-属性,不是下面的某 个站点,而是整个网站。进入“服务”标签,选上启用动态内容压缩,静态内容压缩。 然后选中网站下面那个服务器扩展,新建一个服务器扩展。名字无所谓,下面的添加文件的路径是: c:\windows\system32\inetsrv\gzip.dll,然后启用这个扩展。 这时候静态内容是可以压缩的,但是对于动态内容,aspx文件却不在压缩范围内。因为默认的可压缩文件并没有这个扩展名。而管理界面中你又找不到可以增加扩展名的地方,这时候只能去修改它的配置文件了。 在 c:\windows\system32\inetsrv\下面有个MetaBase.xml文件,可以用记事本打开,找到 IIsCompressionScheme,有三个相同名字的段,分别是deflate,gzip,Parameters,第三段不用管它,前两段有基本 相同的参数,在这两段的参数HcScriptFileExtensions下面都加上一行aspx,如果你有其它的动态程序要压缩,也加在这里。 HcDynamicCompressionLevel改成9,(0-10,9是性价比最高的一个)。 让Discuz速度再次提升 ——“开启IIS Gzip压缩” 以下方法将提升Discuz6.1压缩率0.33%,虽然很小,但对于一些访问量万以上的站点,将可能是一个速度上的飞跃(未尝试,所以是可能)。 这里之所以说Disczu6.1压缩率提升0.33%,因为以下测试是在Discuz6.1下进行的,其他的建站程序一样适用(但是,提升的百分比,就不 得而知了,欢迎大家测试) 注:通过提高压缩率,从而提升了用户浏览网站的速度。 【以下是实际的数据测试结果】 未开启任何Gzip时: 开启了Discuz6.1后台的Gzip压缩: 开启Windows2003 II6中Gzip压缩: 通过以上数据对比,似乎提高了 0.33% 不足以说明什么。个人觉得当是一个较大网站的时候(前提硬件满足),开启它会明显使速度提高。(提升速度的同时,就是牺牲系统资源,所以如果服务器的配置不是太好,需要调整相关参数) 以上数据来源于 http://www.pipeboost.com ,进入后在这个位置输入网址: 【如何配置II6中Gzip压缩?】 注:以下教程,部分不给予太多说明,只要按照以下配置,一般不会出现问题(由于自身在配置时,很顺利,如果有遇到问题,首先请详细核对步骤3次,如果都正确,依然问题存在的话,请回复告知) 如果你要进行测试或安装,请一个一个字认真阅读! 步骤一: 打开II6界面 > 选择“网站” > 右键属性 > 选择“服务”> 按照图中打钩 其中“临时目录的最大容量”与“临时目录”依据自身自行更改设置 特别注意,要给予临时目录 User权限(写入、修改、读取) 步骤二: [...]

2011年12月30日10:25 没有评论

[转载]【认识aspx】页面处理程序【页面生成关系】【页面继承关系】 – DebugLZQ – 博客园. 对于 Web 开发来说,最重要的就是生成 HTML 页面,除了用流的方式一个字符一个字符地输出,有没有简单的方式来创建一个处理程序生成网页呢? 有!就是什么代码也不写的方式。当然,是我们自己不写,由程序生成。 对于网站开发来说,最常用的功能就是生成 HTML 网页,虽然通过处理程序再结合文本输出流,从理论上就可以生成任何网页,但是开发效率显然不容乐观。 为了从根本上解决这个主要的开发问题,ASP.NET 使用模板的方式来生成一个处理程序。模板的扩展名为 aspx ,通过一个内置的处理程序工厂 PageHandlerFactory 将 aspx 形式的模板编译生成处理程序代码,然后,将这个处理程序返回给 HttpApplication 完成请求的处理。aspx 形式的模板文件可以直接通过文本编辑器进行编辑,甚至可以通过 DreamWeaver 之类的网页设计软件进行排版,极大地提高了网站开发的效率,带来了网站开发技术的革命性升级。 在 ASP.NET 的系统配置文件中,已经进行了如下的配置,可以看到,对于扩展名为 aspx 的请求,将由 PageHandlerFactory 这个处理程序工厂进行处理,代码如下: <add path=”*.aspx” verb=”*” type=”System.Web.UI.PageHandlerFactory” validate=”True” /> 这个类定义在命名空间 System.Web.UI 下,具体的定义如下: public class PageHandlerFactory : IHttpHandlerFactory aspx 模板文件与 Page 类和生成类之间的关系如图所示: 需要注意的是, aspx 模板的解析和代码生成仅仅出现在第一次处理的时候,以后的请求将直接使用已经编译生成的程序集,所以,这个处理过程并不会降低网站的处理速度。 [...]

2011年12月29日15:10 没有评论

[转载]ASP.NET 利器:在Global.asax之外实现Application_Start/End,程式元件使用就要这么灵活! – kudy – 博客园. 在System.Web命名空间下, .NET 4.0版本新增了一个 PreApplicationStartMethodAttribute 类,利用它可以Appilcation_Start()前触发的初始化工作。这里主要讲Kudy.Net项目中的System.Kudy.Web.Activating。事实上System.Kudy.Web.Activating也是靠它来运作的,功能很相近但 PreApplicationStartMethodAttribute 有些限制,一是整个Web Application只能加载一次(AllowMultiple=false),如果多个元件都有自己的初始事件就没办法,二是它只提供 Appilcation_Start()前触发的选项,相较之下,System.Kudy.Web.Activating应用起来更方便,因充它允许多次 注册并且还有Appilcation_Start()后触发和Appilcation_End()前触发的选项。 System.Kudy.Web.Activating下提供了四个属性分别是ActivationAttribute、 PreApplicationStartAttribute、PostApplicationStartAttribute和 PreApplicationEndAttribute,利用它们可以灵活地随时在你的程序集中注册一个或多个Appilcation_Start()前/后触发和Appilcation_End()前触发的处理事件。下面来新建一个Web Application项目来测试它们。 下载例子源码:ActivatingWeb.rar ActivatingMvcWeb.rar 请使用vs2010打开项目,本文对你有帮助的话请点下推荐支持,或关注本博客,谢谢。 首先,引用System.Kudy程序集(注意:System.Kudy有.Net3.5和.Net4.0版本的,4.0版本才支持此功能)。新建ActivatingTest类,然后在里面再加上几个测试类,代码如下: ? using System; using System.Collections.Generic; using System.Linq; using System.Web; // 引用命名空间 using System.Kudy.Web.Activating; // 在程序集注册应用程序触发事件(建议写在:AssemblyInfo.cs) [assembly: Activation(typeof(ActivatingWeb.MyApplication))] [assembly: Activation(typeof(ActivatingWeb.MyApplication_2))] [assembly: PreApplicationStart(typeof(ActivatingWeb.MyStaticApplication), "PreStart")] [assembly: PostApplicationStart(typeof(ActivatingWeb.MyStaticApplication), "PostStart")] [assembly: PreApplicationEnd(typeof(ActivatingWeb.MyStaticApplication), "PreEnd")] namespace ActivatingWeb { public [...]

2011年12月13日08:48 评论关闭

[转载]利用Nginx实现最简单的防盗链 – kudy – 博客园. 一、文件的防盗链: location ~* \.(gif|jpg|png|swf|flv)$ { valid_referers none blocked www.kudystudio.com kudystudio.com; if ($invalid_referer) { rewrite ^/ http://www.kudystudio.com/403.html; #return 403; } } 第一行:gif|jpg|png|swf|flv 表示对gif、jpg、png、swf、flv后缀的文件实行防盗链 第二行: 表示对www.kudystudio.com kudystudio.com这2个来路进行判断 if{}里面内容的意思是,如果来路不是指定来路就跳转到http://www.kudystudio.com/403.html页面,当然直接返回403也是可以的。 二、目录的防盗链: location /images/ { alias /data/images/; valid_referers none blocked server_names *.kudystudio.com kudystudio.com; if ($invalid_referer) { return 403; } } 下载nginx1.0 /*728*90,创建于2011-1-13*/ var cpro_id = [...]

2011年12月6日13:33 评论关闭
备案信息:冀ICP备10007948号