LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

ASP和C#.net之response.end的优缺点介绍

admin
2022年6月21日 16:25 本文热度 437

首先讲讲它的好处。

调试程序的时候用处也很有用,类似设置断点,特别是你的程序有重大问题,如有死循环的时候一般的response.write   查看中间结果是无法看到的,这时在response.write后加入response.end,这个查看中间结果很有用。

不过,如果使用 Response.End、Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常。您可以使用 try-catch 语句捕获此异常。
Response.End 方法终止页的执行,并将此执行切换到应用程序的事件管线中的 Application_EndRequest 事件。不执行 Response.End 后面的代码行。
此问题出现在 Response.Redirect 和 Server.Transfer 方法中,因为这两种方法均在内部调用 Response.End。

解决方案 :

要解决此问题,请使用下列方法之一:
? 对于 Response.End,调用 HttpContext.Current.ApplicationInstance.CompleteRequest 方法而不是 Response.End 以跳过 Application_EndRequest 事件的代码执行。
? 对于 Response.Redirect,请使用重载 Response.Redirect(String url, bool endResponse),该重载对 endResponse 参数传递 false 以取消对 Response.End 的内部调用。例如:
Response.Redirect ("Default.aspx", false);

Response.End()用法 

ASP开发中可能有时候会用大段的if... else 的判断,不过如果是动态Response.write的内容,你想更方便阅读代码,可以用Response.End()来终端ASP的执行,也就类似于Break的用法,举个例子:

if (userid="")or(password="") then Response.Write("<script lanuage=javascript>alert('UserName or Password is Empty!');location.href='../default.asp';</script>") Response.End() ‘这里进行了中断 end if 下面是不为空进行读取数据库的操作,省略了n行代码

这样当传入的用户名或密码为空时,自动write提示信息信息,然后Response.End()中断程序,从而达到if 。。。else的作用。

另外使用Response.End的时候,就是我们日常调试程序的时候,比如

相输出拼接的SQL语句,而不想执行下面的代码,那么可以这么做

sql="select * from userinfo "response.Write(sql)response.End()rs.open sql ,conn,1,1 '这句是不会执行的

如果怕加入Response.End()的地方过多而正式发布时候不好注释掉的化,可以用个函数将其封装起来,如下面代码:

sub debug() Response.End()end sub

上面的代码修改如下:

sql="select * from userinfo "response.Write(sql)debug()rs.open sql ,conn,1,1 '这句是不会执行的

这样当进行正式发布时,将函数debug中的语句注释掉,就可以起到调试的作用,不过这个也有个问题就是,如果你使用太多的debug(),可能在调试的时候程序会不能按照需要进行中断,可能有时候你不希望这些地方中断执行,那么我们来进一步重构debug()函数,如下:

sub debug(isBreak) 'isBreak是boolean值的参数,如果设置为true的时候则进行中断,否则,不进行中断处理 if isBreak then Response.End() endend sub

使用时候代码如下:

sql="select * from userinfo "response.Write(sql)debug(false)rs.open sql ,conn,1,1 '这句是会执行的rs.close()sql="select * from product "response.write(sql)debug(true)rs.open sql,conn,1,1 '这句不会执行

好了,这样基本上可以满足我们控制中断的需求了,不过只是简单的进行了分析,其实还很不完善,调试需求可能还有很多,需要满足,还需要进一步重构。其实程序开发就是一个重构重构再重构的过程,要不怎么会出来那么多的设计模式,都是前人从实际开发重构过程总结出来的经验,值得大家借鉴。


该文章在 2022/6/21 16:26:28 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved