/// <summary>
/// HTTP消息拦截器
/// </summary>
public class RequestHandler : DelegatingHandler
{
/// <summary>
/// 拦截请求
/// </summary>
/// <param name="request">请求</param>
/// <param name="cancellationToken">用于发送取消操作信号</param>
/// <returns></returns>
protected async override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
//获取URL参数
NameValueCollection query = HttpUtility.ParseQueryString(request.RequestUri.Query);
//获取Post正文数据,比如json文本
string fRequesContent = request.Content.ReadAsStringAsync().Result; //可以做一些其他安全验证工作,比如Token验证,签名验证。
//可以在需要时自定义HTTP响应消息
//return SendError("自定义的HTTP响应消息", HttpStatusCode.OK); //请求处理耗时跟踪
Stopwatch sw = new Stopwatch();
sw.Start();
//调用内部处理接口,并获取HTTP响应消息
HttpResponseMessage response = await base.SendAsync(request, cancellationToken);
//篡改HTTP响应消息正文
response.Content = new StringContent(response.Content.ReadAsStringAsync().Result.Replace(@"\\", @"\"));
sw.Stop();
//记录处理耗时
long exeMs = sw.ElapsedMilliseconds;
return response;
} /// <summary>
/// 构造自定义HTTP响应消息
/// </summary>
/// <param name="error"></param>
/// <param name="code"></param>
/// <returns></returns>
private HttpResponseMessage SendError(string error, HttpStatusCode code)
{
var response = new HttpResponseMessage();
response.Content = new StringContent(error);
response.StatusCode = code;
return response;
}
}

  

public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API 配置和服务
config.MessageHandlers.Add(new RequestHandler());
// Web API 路由
config.MapHttpAttributeRoutes();
}
} public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();//设置返回值统一为json
}
}

  

自定义HTTP消息拦截的更多相关文章

  1. WCF消息拦截,利用消息拦截做身份验证服务

    本文参考  http://blog.csdn.net/tcjiaan/article/details/8274493  博客而写 添加对信息处理的类 /// <summary> /// 消 ...

  2. 传说中的WCF(10):消息拦截与篡改

    我们知道,在WCF中,客户端对服务操作方法的每一次调用,都可以被看作是一条消息,而且,可能我们还会有一个疑问:如何知道客户端与服务器通讯过 程中,期间发送和接收的SOAP是什么样子.当然,也有人是通过 ...

  3. 传说中的WCF:消息拦截与篡改

    我们知道,在WCF中,客户端对服务操作方法的每一次调用,都可以被看作是一条消息,而且,可能我们还会有一个疑问:如何知道客户端与服务器通讯过程中,期间发送和接收的SOAP是什么样子.当然,也有人是通过借 ...

  4. 重温WCF之消息拦截与篡改(八)

    我们知道,在WCF中,客户端对服务操作方法的每一次调用,都可以被看作是一条消息,而且,可能我们还会有一个疑问:如何知道客户端与服务器通讯过程中,期间发送和接收的SOAP是什么样子.当然,也有人是通过借 ...

  5. 自定义WM_NOTIFY消息

    自定义WM_NOTIFY消息 习惯了用自定义用户消息进行各种状态的通知,特别是子窗口与父窗口之间的交互.但ON_MESSAGE没有控件ID的限制,如果有多个子窗口发送同一个消息给父窗口时,父窗口就不知 ...

  6. Windows消息拦截技术的应用

    Windows消息拦截技术的应用 民航合肥空管中心 周毅 一.前 言 众所周知,Windows程式的运行是依靠发生的事件来驱动.换句话说,程式不断等待一个消息的发生,然后对这个消息的类型进行判断,再做 ...

  7. Windows消息拦截技术的应用(作者博客里有许多相关文章)

    民航合肥空管中心 周毅 一.前 言 众所周知,Windows程式的运行是依靠发生的事件来驱动.换句话说,程式不断等待一个消息的发生,然后对这个消息的类型进行判断,再做适当的处理.处理完此次消息后又回到 ...

  8. iOS 微信消息拦截插件系列教程-(总目录)

    微信iOS消息拦截插件教程 标签: 越狱开发 背景介绍 本教程所有内容免费 本教程来源于一次知识分享,如果有需要了解更多的 请联系QQ:480071411 iOS逆向高级开发群:375024882 1 ...

  9. iOS 微信消息拦截插件系列教程-附录(服务端成果展示)

    微信iOS消息拦截插件教程 标签: 越狱开发 背景介绍 本教程所有内容免费 本教程来源于一次知识分享,如果有需要了解更多的 请联系QQ:480071411 iOS逆向高级开发群:375024882 服 ...

随机推荐

  1. LVS (Linux虚拟服务器)模型及算法

    LVS(Linux Virtual Server)Linux虚拟服务器 LVS集群采用IP负载均衡技术和基于内容请求分发技术. 用户请求发给负载均衡调度器,由负载均衡调度器根据设定的调度算法将请求发给 ...

  2. 三星固态Dell版的960g的sm863a硬盘

    smart参数 CrystalDiskMark测试 AS SSD 测试 HD Tune Pro测试 DiskGenius查看 总结: 按我的测试,性能比sm865的还好,不知道咋回事,按三星给的参数这 ...

  3. Python学习进阶之薄弱点总结

    ''' 1.实现用户传入一个普通字符串, 返回字符串的md5加密结果的函数 ''' # import hashlib # # def M(str): # m = hashlib.md5() # m.u ...

  4. 知识点5 C++保存txt文件

    简单示例 #include <windows.h> #include <fstream> #include <iostream> #include <stri ...

  5. django命名url与url反向解析

    1.在urls.py路由中指定别名 2.在views.py视图文件中导入from django.shortcuts import render, redirect, reverse 3.也可从这里导入 ...

  6. K8s集群认证之RBAC

    kubernetes认证,授权概括总结: RBAC简明总结摘要:API Server认证授权过程: subject(主体)----->认证----->授权[action(可做什么)]--- ...

  7. 批量转换文件字符编码(GBK转UTF-8)

    今天收到一份代码,拖到IDE中发现乱码,看来下编码是GBK的(

  8. Android Studio 之 GridView

    1. 数据源 ArrayList Cursor 2. 适配器 Adapter ArrayAdapter SmipleAdapter SmipleCursorAdapter BaseAdapter

  9. Linux 系统开机时间及当前时间

    最近一次系统开机时间:date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M ...

  10. .NET技术webconfig加密操作

    webconfig 加密 aspnet_regiis.exe -pef secion physical_directory -prov provider    section表示要加密的配置节 phy ...