asp.net 截取Http请求的实现代码

1:前言
本篇文章比较短,主要是因为我的一个随想产生的一段代码。 这段代码的功能你可以叫做是简单的Http服务器也可以叫做Http请求截取。它实现的功能就是截取Http请求然后自己做处理。
2:代码


代码如下:

public class HttpServer : IDisposable
{
private HttpListener listener;
public void Start()
{
listener = new HttpListener();
listener.Prefixes.Add("http://localhost/");
listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication | AuthenticationSchemes.Anonymous;
listener.Start();
listener.BeginGetContext(GetContext, null);
}
private void GetContext(IAsyncResult ar)
{
HttpListenerRequest Request;
HttpListenerResponse Response;
try
{
HttpListenerContext ctx = listener.EndGetContext(ar);
Request = ctx.Request;
Response = ctx.Response;
//setup waiting for the next request
listener.BeginGetContext(GetContext, null);
}
catch (InvalidOperationException)
{
return;
}
catch (HttpListenerException)
{
return;
}
try
{
var sw = new StreamWriter(Response.OutputStream);
sw.Write(@"<html><body><p>你的请求已经被截取</p></body></html>");
sw.Flush();
}
finally
{
Response.OutputStream.Flush();
Response.Close();
}
}
public void Dispose()
{
if (listener != null)
listener.Stop();
}
}

3:简单解释一下
代码的核心就是HttpListener,通过它去侦听一个端口,当有请求的时候BeginGetContext交给GetContext方法进行异步处理,在这个方法的内部首先实现的就是重新监听。然后进行自己的处理。
呵呵,这段代码有什么其他用处待考虑。

(0)

相关推荐

  • asp.net 截取Http请求的实现代码

    1:前言 本篇文章比较短,主要是因为我的一个随想产生的一段代码. 这段代码的功能你可以叫做是简单的Http服务器也可以叫做Http请求截取.它实现的功能就是截取Http请求然后自己做处理. 2:代码 复制代码 代码如下: public class HttpServer : IDisposable { private HttpListener listener; public void Start() { listener = new HttpListener(); listener.Prefix

  • ASP.NET通用权限验证的实现代码思路

    本篇介绍通用权限验证的实现代码思路,总共分为导入参数.解析XML.根据XML配置进行处理.返回结果. 代码架构图 一. 类介绍 1.SFWebPermission:实现IHttpModule接口,权限验证入口: 2.SFConfig:导入XML配置类: 3.SFPermission:解析XML配置进行权限验证: 4.SFAccessOper:数据库操作类: 5.SFPermissionSQL:XML节点实体类: 6.SFParameter:XML节点实体类: 7.SFCommon:系统变量定义类

  • Jquery异步请求数据实例代码

    一.Jquery向aspx页面请求数据 前台页面JS代码: 复制代码 代码如下: $("#Button1").bind("click", function () { $.ajax({ type: "post", url: "default.aspx", data: "name=" + $("#Text1").val(), success: function (result) { aler

  • 使用NLog给Asp.Net Core做请求监控的方法

    为了减少由于单个请求挂掉而拖垮整站的情况发生,给所有请求做统计是一个不错的解决方法,通过观察哪些请求的耗时比较长,我们就可以找到对应的接口.代码.数据表,做有针对性的优化可以提高效率.在 asp.net web api 中我们可以通过注册一个 DelegatingHandler 来实现该功能.那在 asp.net core 中该如何实现呢? 一:比较 asp.net web api 和 asp.net core 的请求管道 观察这两张图,可以发现他们非常的相似,都是管道式的设计,在 asp.ne

  • ASP.NET操作MySql数据库的实例代码讲解

    一.把MySql.Data.dll放到BIN目录下. 二.这是aspx.cs的全部源码,修改参数直接运行即可!   using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; publ

  • asp 字符串截取函数

    asp 字符串截取函数'********************************************************* '函数:cutStr[str(strlen)] '参数:str,待处理的字符串,strlen,截取的长度 '作者:木木 '日期:2007/7/12 '描述:截取指定长度的字符串 '示例:<%=cutStr("欢迎光临阿里西西",5)%> '*************************************************

  • NodeJS收发GET和POST请求的示例代码

    本文介绍了NodeJS收发GET和POST请求的示例代码,分享给大家,也给自己留个笔记 一 express框架接收 app.get('/',function(req,res) { var url = req.query.url; var name = req.query.name; console.log(url, name); }); 二 接收Get 1. get参数在req.url上 2. 使用url.parse将数据由字符串转变为obj index.js: var http = requi

  • Nginx限制某个IP同一时间段的访问次数和请求数示例代码

    nginx可以通过ngx_http_limit_conn_module和ngx_http_limit_req_module配置来限制ip在同一时间段的访问次数. ngx_http_limit_conn_module:该模块用于限制每个定义的密钥的连接数,特别是单个IP​​地址的连接数.使用limit_conn_zone和limit_conn指令. ngx_http_limit_req_module:用于限制每一个定义的密钥的请求的处理速率,特别是从一个单一的IP地址的请求的处理速率.使用"泄漏桶

  • asp.net水晶报表参数字段在代码中赋值的方法

    本文实例讲述了asp.net水晶报表参数字段在代码中赋值的方法.分享给大家供大家参考.具体实现方法如下: // 声明将参数传递给查看器控件所需的变量. ParameterFields paramFields = new ParameterFields (); ParameterField paramField = new ParameterField (); ParameterDiscreteValue discreteVal = new ParameterDiscreteValue (); P

  • PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码

    1. 截取整个屏幕 Screenshot 复制代码 代码如下: <?php    $im = imagegrabscreen();    imagepng($im, "myscreenshot.png");    ?> 2. 截取一个窗口 Capture a window (IE for example) 复制代码 代码如下: <?php    $browser = new COM("InternetExplorer.Application"); 

随机推荐