请求上下文HttpContext解释
1 HttpContext上下文作用
有关应用程序状态信息,处理的请求以及构建的响应等信息全部通过HttpContext上下文获取
2 Httpcontext类用于从头至尾跟踪请求的状态,他也是有关请求的所有可用信息(包括httpRequest和httpResponse对象)的通道
3 模块
模块将实现System.web.IHttpModule接口,System.web.IHttpModule接口有两个方法
Init(app):实例化模块类并将其传递给HttpApplication实例时,调用此方法。使用此方法可为HttpApplication事件注册处理程序方法。
Dispose() 在完成请求处理后调用此方法
模块将在新建HttpApplication对象时进行实例化,每个HttpApplication对象都会获取它自己的一组模块对象,在实例化模块时将调用Init()方法,
和HttpApplication对象一样,模块也可用于处理多个请求(但一次只处理一个请求)
4 如何创建自定义的模块
创建一个实现IHttpModule的类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace Events
{
/// <summary>
/// 模块功能,防止未通过身份验证的用户访问指定的窗体
/// </summary>
public class ParamsModule : IHttpModule
{
public void Dispose()
{ } public void Init(HttpApplication app)
{
app.PostAuthenticateRequest += (src, args) =>
{
if (app.Request.Url.LocalPath=="/Params.aspx"&&!app.User.Identity.IsAuthenticated)
{
app.Context.AddError(new UnauthorizedAccessException());
}
};
}
}
}
第二部注册自定义的模块(asp.net framework不会自动搜索模块类),使它成为生命周期的一部分,在web.config文件中注册
<system.webServer>
<modules>
<add name="ParamsProtecttion" type="Events.ParamsModule"/>
</modules>
</system.webServer>
如何让模块自动注册到asp.net framework,而不用使用配置?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web; //特性告诉asp.net fromework他应在应用程序启动时调用ModuleRegistration类中的RegisterModules方法
[assembly:PreApplicationStartMethod(typeof(CommonModules.ModuleRegistration), "RegisterModules")]
namespace CommonModules
{
public class ModuleRegistration
{
public static void RegisterModules()
{
Type[] moduleTypes =
{
typeof(CommonModules.TimerModule),
typeof(CommonModules.LogModule)
}; foreach (Type item in moduleTypes)
{
HttpApplication.RegisterModule(item);
}
}
}
}
这样就不用在web.config文件中注册了
请求上下文HttpContext解释的更多相关文章
- Asp.Net Core获取请求上下文HttpContext
注:特别说明当前版本对应.Net Core2.1意义上框架 一.注入HttpContextAccessor ASP.NET Core中提供了一个IHttpContextAccessor接口,HttpC ...
- 解决WCF“接收对 http://xxx.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致"
最近在工作中新加了一个接口,本地调试的时候,直接抛出“接收对 http://xxx.svc 的 HTTP 响应时发生错误.这可能是由于服务终结点绑定未使用 HTTP 协议造成的.这还可能是由于服务器中 ...
- Flask系列10-- Flask请求上下文源码分析
总览 一.基础准备. 1. local类 对于一个类,实例化得到它的对象后,如果开启多个线程对它的属性进行操作,会发现数据时不安全的 import time from threading import ...
- 接收对 http://192.168.1.18:8001/ObtainData/Service 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。
[2015/8/5 19:28:49]错误信息:接收对 http://192.168.1.18:8001/ObtainData/Service 的 HTTP 响应时发生错误.这可能是由于服务终结点绑定 ...
- Flask--偏函数, 线程安全, 请求上下文
一 . 偏函数 from functools import partial def func(a, b): return a + b new_func = partial(func, 3, 4) # ...
- flask请求上下文
先看一个例子: #!/usr/bin/env python # -*- coding:utf-8 -*- import threading # local_values = threading.loc ...
- python 全栈开发,Day139(websocket原理,flask之请求上下文)
昨日内容回顾 flask和django对比 flask和django本质是一样的,都是web框架. 但是django自带了一些组件,flask虽然自带的组件比较少,但是它有很多的第三方插件. 那么在什 ...
- flask上下文全局变量,程序上下文、请求上下文、上下文钩子
Flask上下文 Flask中有两种上下文,程序上下文(application context)和请求上下文(request context) 当客户端发来请求时,请求上下文就登场了.请求上下文里包含 ...
- flask 请求上下文
一篇引用大牛的 https://www.cnblogs.com/zhaopanpan/p/9457343.html ### 线程安全 ```python# 线程不安全class Foo(object) ...
随机推荐
- iOS如何将RGB565的原始图像数据转为UIImage对象
我们在做一些图像处理时,往往会涉及到RGB565这种图像数据格式.由于其每个像素仅占2个字节,对于不需要像素透明度的情况下使用RGB565既能基本能保证图像的色彩,又能降低图像数据尺寸,节省带宽.因此 ...
- 008-网络抓包工具-wireshark
一.概述 二.安装 三.使用 3.1.基础设置 语言:WireShark→首选项→语言 3.2.使用过程 打开软件,选择对应的网卡, Filter:设置对应的关键词后,点击回车或者右侧箭头 如,协议: ...
- linux简单命令6---挂载
- 目标检测 - TridentNet
转载: https://zhuanlan.zhihu.com/p/54334986 http://haha-strong.com/2019/07/25/20190725-TridentNet/ 开源代 ...
- 实现在线阅读WORD,PDF等文件,JAVA,PHP都可以
1 <?php 2 //header("Content-type:text/html;charset=utf-8"); 3 //word转html 展示 4 $lj=$_GE ...
- MySQL网页端在线查询工具
现在许多应用都移到云服务器上面了,数据库的远程维护.监控成为一大问题,通过TreeSoft数据库管理系统,可以方便的使用浏览器,通过网页操作的方式管理MySQL,Oracle,DB2,PostgreS ...
- 开发工具之GIT
GIT WORKFLOW this readme created on 2019.07.28 by Suarez7988 这是一遍介绍git版本控制流程的中文说明,必须通篇阅读一下 https://g ...
- centos(linux)-jdk配置
1.清理系统默认自带的jdk 在安装centos时,可能系统会默认安装了例如openjdk等,需要先手动卸载 先执行:rpm -qa | grep jdk (查看已经自带的jdk): 卸载命名:sud ...
- 【ARM-Linux开发】 pkg-config的用法
pkg-config 是一个提供从源代码中编译软件时查询已安装的库时使用的统一接口的计算机软件.pkg-config原本是设计用于Linux的,但现在在各个版本的BSD.windows.Mac OS ...
- go语言简单介绍,增强了解
1. Go语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同.但是它通过接口(interface)的概念来实现多态性.Go语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之 ...