context.Response.End()的用法和本质

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5
 6 namespace Web_Cassini
 7 {
 8     /// <summary>
 9     /// response1 的摘要说明
10     /// </summary>
11     public class response1 : IHttpHandler
12     {
13
14         public void ProcessRequest(HttpContext context)
15         {
16             context.Response.ContentType = "text/plain";
17             string username = context.Request["username"];
18             string password = context.Request["password"];
19             if(string.IsNullOrWhiteSpace(username))
20             {
21                 context.Response.Write("用户名不能为空" + "\n");
22                 //return;
23                 try
24                 {
25                     context.Response.End(); //本质就是一个抛异常--> 效率低能不用最好不用
26                     //EndHandler(context);
27                 }
28                 catch(Exception ex)
29                 {
30                     context.Response.Write(ex.ToString());
31                 }
32             }
33             if (string.IsNullOrWhiteSpace(password))
34             {
35                 context.Response.Write("密码不能为空"+"\n");
36                 //return;
37                 //context.Response.End();
38                 EndHandler(context);
39             }
40             context.Response.Write("插入成功" + "\n");
41         }
42
43         private void EndHandler(HttpContext context)
44         {
45             context.Response.Write("终止HttpHandler" + "\n");
46             context.Response.End();  //子方法中终止进程 只有抛异常才能终止当前执行 不能用return End()本质就是抛出线程异常
47         }
48
49         public bool IsReusable
50         {
51             get
52             {
53                 return false;
54             }
55         }
56     }
57 }

context.Response.End()的用法和本质:

用法:可以用来终止进程,即当前HttpHandler的执行,

  也可以在子方法中终止HttpHandler的执行,

  实际在子方法中终止程序,只有一种可能,那就是程序抛异常,所以context.Response.End()得本质就是抛出了线程异常

  由于抛异常的效率较低,所以能不能就不用,在主方法中最好还是使用return;终止程序比较好,

  但是在子方法中只能使用抛异常终止程序,即使用context.Response.End()终止程序。

时间: 2024-10-13 03:13:49

context.Response.End()的用法和本质的相关文章

C#开发web程序中关于 一般处理程序中的context.Response.ContentType = &quot;text/plain&quot;

简单的静态页面calculator.html: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>     <title></title> </head

Server.Transfer, context.Response.Redirect

Server.Transfer 内部跳转 可以用来传参数,不同页面 不能直接跳转到一个一般处理程序,必须让目标一般处理程序继承于 system.web.ui.page  (可以直接跳转到aspx页面) context.Response.Redirect 服务器向客户端发送的 response 报文中会带有 302 状态码,然后浏览器就会去访问 跳转链接 (报文里面会有) 所以会有多次请求,而且 在跳转的时候,end请求了

将一个文件作为下载的形式打开【下载文件】,添加报文头context.Response.AddHeader(&quot;Content-disposition&quot;, &quot;attachment; filename=&quot;

<1> HTMLPage1.htm页 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <a href="下载Handler1.ashx">下载</a> </body> </html> 下载Handler1.ashx.cs

如鹏网学习笔记(十四)ASP.NET

Asp.net笔记 一.Socket类 进行网络编程的类,可以在两台计算机之间进行网络通讯 过程: 向服务器发送指令: GET /index.html HTTP/1.1 Host:127.0.0.1:8080 回车空行 二.浏览器是什么 浏览器就是一个Socket网络客户端,帮助用户请求网站服务器上的内容并且将返回的内容渲染为图形化内容 浏览器的过程: 用户在浏览器输入网址,浏览器向DNS服务器发出Socket请求, 服务器把请求的内容返回给浏览器, 浏览器将内容进行解析并渲染绘制成页面展现,

http协议和web本质(转)

当你在浏览器地址栏敲入“http://www.cnblogs.com/”,然后猛按回车,呈现在你面前的,将是博客园的首页了(这真是废话,你会认为这是理所当然的).作为一个开发者,尤其是web开发人员,我想你有必要去了解这一系列的处理流程,在这期间,浏览器和服务器到底是如何打交道的?服务器又是如何处理的?浏览器又是如何将网页显示给用户的呢?...... 疑惑和细节真是太多了.坦白讲,要想彻彻底底的弄清楚以上每个疑惑和处理细节,至少需要十本书的厚度,所谓“底层无极限”嘛,而且不同的web服务 器和服

http协议和web本质

当你在浏览器地址栏敲入“http://www.cnblogs.com/”,然后猛按回车,呈现在你面前的,将是博客园的首页了(这真是废话,你会认为这是理所当然的).作为一个开发者,尤其是web开发人员,我想你有必要去了解这一系列的处理流程,在这期间,浏览器和服务器到底是如何打交道的?服务器又是如何处理的?浏览器又是如何将网页显示给用户的呢?...... 疑惑和细节真是太多了.坦白讲,要想彻彻底底的弄清楚以上每个疑惑和处理细节,至少需要十本书的厚度,所谓“底层无极限”嘛,而且不同的web服务 器和服

http协言和web本质

http协议和web本质 作为一个开发者,尤其是web开发人员,我想你有必要去了解这一系列的处理流程,在这期间,浏览器和服务器到底是如何打交道的?服务器又是如何处理的?浏览器又是如何将网页显示给用户的呢?...... 疑惑和细节真是太多了.坦白讲,要想彻彻底底的弄清楚以上每个疑惑和处理细节,至少需要十本书的厚度,所谓“底层无极限”嘛,而且不同的web服务 器和服务器端编程语言的实现和处理流程不尽相同(但本质都是相通的).本文中,我将根据http协议的有关知识,跟大家讲解一些web开发的本质.不管

了解ASP.NET Core框架的本质

ASP.NET Core自身的运行原理和设计思想创建了一个 “迷你版” 的ASP.NET Core框架,并且利用这个 “极简” 的模拟框架阐述了ASP.NET Core框架最核心.最本质的东西.整个框架涉及到的核心代码不会超过200行,涉及到7个核心的对象. PPT下载源代码下载 目录1. 从Hello World谈起2. ASP.NET Core Mini3. Hello World 24. 第一个对象:HttpContext5. 第二个对象:RequetDelegate6. 第三个对象:Mi

20160314 Request 和Response

一.Response 1.Resonse的继承结构: ServletResponse--HttpServletResponse 2.Response代表响应,于是响应消息中的 状态码.响应头.实体内容都可以由它进行操作,由此引伸出如下实验: 3.利用Response输出数据到客户端 response.getOutputStream().write("中文".getBytes())输出数据,这是一个字节流,是什么字节输出什么字节,而浏览器默认用平台字节码打开服务器发送的数据,如果服务器端