system.web下的HttpModules节点和system.webServer下的modules节点的配置区别
自定义web模块,需继承System.Web.IHttpModule接口
一:拦截对该服务器所有的http请求。
第一步:将自定义module类使用强名编译,并放在GAC中。
Windows7不能直接把dll文件拖到GAC中,只能只用GACUtil工具。
方法是:打开Visual Studio命令行,提示进入目录:E:\Program Files\Microsoft Visual Studio 10.0\VC,
gacutil /i [assemblypath],将该Assembly安装在GAC中
gacutil /l [assemblyName], 出现Assembly的详细信息
gacutil /u [assemblyName], 卸载该Assembly
第二步:把模块加在machine.config, web.config或者IIS的applicationhost.config里。
IIS的applicationhost.config位于(%windir%\system32\inetsrv\config\applicationhost.config)
<location path="" overrideMode="Allow">
<system.webServer>
<modules>
<add name="HttpRequestModule" type="RequestModuleNS.RequestModuleClass,RequestModuleAssembly,Version=1.0.0.0,Culture=neutral,PublicKeyToken=5510eb446e44a3fd"/>
......................
其中,type的格式为:“NameSpaceName.ClassName,AssemblyName, StrongName”
二:只拦截对某web程序的Request,有两种方法:
1.将自定义模块单独编译为一个dll文件,并通过dll引用添加到web程序。
并修改该程序内部的web.config文件:
<configuration>
<system.webServer> <!-- IIS7.0集成模式下 -->
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<add name="HttpRequestModule" type="RequestModuleNS.RequestModuleClass,RequestModuleAssembly"/>
</modules>
</system.webServer>
<system.web> <!-- IIS7.0经典模式或者IIS之前版本 -->
<compilation debug="true" targetFramework="4.0"/>
<httpModules>
<add name="HttpRequestModule" type="RequestModuleNS.RequestModuleClass,RequestModuleAssembly"/>
</httpModules>
</system.web>
</configuration>
2.把自定义模块的类文件放在web网站的app_code目录下,并修改该程序内部的web.config文件:
<configuration>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<add name="HttpRequestModule" type="RequestModuleNS.RequestModuleClass"/>
</modules>
</system.webServer>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<httpModules>
<add name="HttpRequestModule" type="RequestModuleNS.RequestModuleClass"/>
</httpModules>
</system.web>
</configuration>
其中,type格式为“NameSpaceName.ClassName“。
奇怪的是,在第二种方式下,在VS debug模式下访问.wmv文件时不能触发module,访问.aspx文件时则可以。而第一种方式下,访问程序里的.wmv文件和.aspx文件都可以触发该自定义module。笔者不知为何,索性改回第一种方式。留待以后再探索。(探索结果:原来不是第二种方式的问题,而是在测试时网站端口改变,而旧的debug线程未被杀死,所有用旧的url直接访问了过期的旧线程。这是不是VS的一个bug,当退出debug时,启动的临时线程并未被杀死,而重新启动debug时,旧的临时server线程也未被新的替代,好大一个bug哇。看图:
,只有两个,壮观的时候有6,7个呢。
)
system.web下的HttpModules节点和system.webServer下的modules节点的配置区别的更多相关文章
- 基类包括字段“ScriptManager1”,但其类型(System.Web.UI.ScriptManager)与控件(System.Web.UI.ScriptManager)的类型不兼容
首先说下原先的情况,就是原本老项目的Web解决方案是使用.net framework 2.0的老版本, 所以机器也安装过Microsoft ASP.NET 2.0 AJAX Extensions..A ...
- 未能加载文件或程序集“System.Web.Razor 2.0.0 or system.web.webpages.razor 2.0.0
出现这种问题,有两种情况: 一.bin目录下没有相应的dll,可以将相应dll拷贝至bin目录或者设置相关dll的属性“复制到本地”:true 二.如果是高于Visual Studio2013版本的开 ...
- Web.config的system.webServer节点与system.web的区别
Web.config 文件中的 system.webServer 节用于指定适用于 Web 应用程序的 IIS 7.0 设置.system.WebServer 是 configuration 节的子级 ...
- 返璞归真 asp.net mvc (2) - 路由(System.Web.Routing)
原文:返璞归真 asp.net mvc (2) - 路由(System.Web.Routing) [索引页] [源码下载] 返璞归真 asp.net mvc (2) - 路由(System.Web.R ...
- 深入System.Web.Caching命名空间 教你Hold住缓存管理
一,System .Web.Caching与缓存工作机制简介 System.Web.Caching是用来管理缓存的命名空间,其父级空间是System.Web,由此可见,缓存通常用于Web网站的开发,包 ...
- System.Web.Mvc 找到的程序集清单定义与程序集引用不匹配
System.IO.FileLoadException: 未能加载文件或程序集"System.Web.Mvc, Version=5.0.0.0, Culture=neutral, Publi ...
- VS2010 中,windows服务不能添加 System.Web 引用
今天在写windows服务的时候,右键添加引用->.NET中没有找到System.Web,在->Recent中找到System.Web,但添加完后却显示黄色叹号,最后百度一下解决了这个问题 ...
- asp.net mvc4 System.Web.Optimization找不到引用
在MVC4的开发中,如果创建的项目为空MVC项目,那么在App_Start目录下没有BundleConfig.cs项的内容,在手动添加时在整个库中都找不到:System.Web.Optimizatio ...
- Asp.Net 之 未能加载文件或程序集 system.web.extensions 解决方法
最近做项目发现未能加载文件或程序集的错误,这是由于我的机器上没有安装Ajax的原因.问题解决后,整理如下:表现:1."System.Web.Extensions, Version=1.0.61025. ...
- <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
Asp.net Mvc 未能加载类型“System.Web.Mvc.ViewPage 的解決方法 2010-11-30 17:31:51| 分类: .net mvc |举报 |字号 订阅 如果多 ...
随机推荐
- 一个有趣的python排序模块:bisect
今天同事说到了一个python的排序模块bisect,觉得挺有趣的,跟大家分享分享. 先看看模块的结构: 前面五个属性大家感兴趣可以打出来看看数值,这里就不介绍了. 先说明的是,使用这个模块的函数前先 ...
- CentOS 7 下安装 Nginx(转)
转载自:http://www.linuxidc.com/Linux/2016-09/134907.htm 安装所需环境 Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Wi ...
- java判断是移动端还是pc端
// \b 是单词边界(连着的两个(字母字符 与 非字母字符) 之间的逻辑上的间隔), // 字符串在编译时会被转码一次,所以是 "\\b" // \B 是单词内部逻辑间隔(连着的 ...
- iis下php 500错误
很不想用iis,然而客户不想增加机器,只好按客户的意思了.可是没想到发送短信以在本地 机器上是好的,在iis下直接500. 一开始以为是防火墙问题,后来检查了一下没有,再后来换了一个短信接口, ...
- php连接oracle数据库
1.先安装一下oracle instant,把oci.dll所在的目录加入PATH环境变量里 或者直接安装oracle express php_pdo_oci 依赖于oracle 的oci.dll 2 ...
- layer关闭弹出层,弹出打印
常规的话,下面能够完成关闭弹出层 var index = parent.layer.getFrameIndex(window.name); //延迟关闭 解决打印窗口弹不出来的情况 parent.la ...
- 使用textutil进行文件格式转换
Typorahtml, body {overflow-x: initial !important;}.CodeMirror { height: auto; } .CodeMirror-scroll { ...
- u-boot2016.05 有关 4096page size , oob == 224 nand 的移植支持
大致介绍一下这个 nand 的基础属性 pagesize == 4096 byte oob == 224 byte block size == 256 Kbyte u-boot configs/xxx ...
- Redis键
Redis的keys命令用于管理键.使用Redis的keys命令语法如下所示: 语法 redis 127.0.0.1:6379> COMMAND KEY_NAME 例子 redis 127.0. ...
- 测试word发表博客
哈哈哈 我测试一下 <ul class="clearfix"> <li> <div><img src="{IMG_PATH}qr ...