.NET Framework拦截HTTP请求的实现
一、简介
今天讲一下 .NET Framework 程序中拦截 HTTP 请求,这主要用于记录 HTTP 信息,调试程序、分析程序性能等方面。这里贴出实现的核心代码,具体需要结合自己的业务。
二、实现代码
创建一个普通的 HTTPInterceptortHandler 类 ,继承 DelegatingHandler 类,并重写 SendAsync 方法
public class HTTPInterceptortHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
// 根据需求调试,获取更多数据
string requestIP = HttpContext.Current?.Request?.UserHostAddress;
string requestContent = request.Content?.ReadAsStringAsync()?.Result;
string requestUri = request.RequestUri.AbsoluteUri;
return base.SendAsync(request, cancellationToken).ContinueWith<HttpResponseMessage>(
(task) =>
{
string responseContent = task.Result.Content.ReadAsStringAsync().Result;
string responseCode = task.Result.StatusCode.ToString();
// 记录日志、加工一下结果等都可以在这里处理
return task.Result;
}
);
}
}
在 Global.asax 的 Application_Start 方法中注册写好的 HTTPInterceptortHandler 类
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
// 在 Application_Start 方法添加这一行
GlobalConfiguration.Configuration.MessageHandlers.Add(new HTTPInterceptortHandler());
}
}到此这篇关于.NET Framework拦截HTTP请求的实现的文章就介绍到这了,更多相关.NET Framework拦截HTTP内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
GridView中checkbox"全选/取消"完美兼容IE和Firefox
GridView中checkbox的的"全选/取消"使用还是比较频繁的,本文有个不错的示例完美兼容IE和Firefox,感兴趣的朋友可以参考下,希望对大家有所帮助2013-10-10
ASP.NET Core使用AutoMapper实现实体映射
本文详细讲解了ASP.NET Core使用AutoMapper实现实体映射的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-03-03
DotNetCore深入了解之HttpClientFactory类详解
这篇文章主要给大家介绍了关于DotNetCore深入了解之HttpClientFactory类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧2019-03-03


最新评论