IIS Handler and Module探索
Create Handler & Module
- Run the Visual Studio
- Create a Class Library “HMHandler” --> Change the class to HMHandler.cs
- Create a Class Library “HMModule” --> Change the class to HMModule.cs
- Create an ASP.NET Web Application “HMDemo” --> Add a Default.aspx page, to test the handler and module, remember the physical path of the site. (e.g. D:\HMDemo)
The structure of solution as below
1. Add code in HMHandler.cs as below
using System; using System.Web; namespace HMHandler
{
public class HMHandler : IHttpHandler
{
public bool IsReusable
{
get
{
return true;
}
} public void ProcessRequest(HttpContext context)
{
DateTime dt; String useUtc = context.Request.QueryString["utc"]; if (!String.IsNullOrEmpty(useUtc) && useUtc.Equals("true"))
{
dt = DateTime.UtcNow;
}
else
{
dt = DateTime.Now;
}
context.Response.Write(
String.Format("<h1>{0}</h1>",
dt.ToLongTimeString()
));
}
}
}
2. Update the code in HMModule
using System;
using System.Text;
using System.Web;
namespace HMModule
{
public class HMModule : IHttpModule
{
public void Dispose()
{
//throw new NotImplementedException();
}
public void Init(HttpApplication context)
{
context.AuthenticateRequest += Context_AuthenticateRequest;
}
private void Context_AuthenticateRequest(object sender, EventArgs e)
{
try
{
//Get http application
HttpApplication app = sender as HttpApplication;
//Get authorization
var authorization = app.Request.Headers["Authorization"];
//Remove the "Basic "
var authChar = authorization.Remove(, );
var authBytes = Convert.FromBase64String(authChar);
var authString = Encoding.UTF8.GetString(authBytes);
//Reset the authorization
app.Request.Headers.Set("Authorization", "Basic YWR2ZW50XHNmZW5nOk1lbmcxMjMkJV4=");
app.Response.Write("<h1>Module_Authentication is passed</h1>");
}
catch (Exception)
{
}
}
}
}
3. Update the Defualt.aspx.cs
using System; namespace HMDemo
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("hello from default page</br>");
}
}
}
4. Update the web.config as below
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.6"/>
</system.web>
<system.webServer>
<handlers accessPolicy="Read, Execute, Script">
<add name="HMHandler" path="*.dll" verb="*" type="HMHandler.HMHandler" resourceType="File" requireAccess="Execute" preCondition="integratedMode"/>
</handlers>
<modules>
<add name="HMModule" type="HMModule.HMModule" />
</modules>
</system.webServer>
</configuration>
- Build the solution
- Run the Internet Information Services (IIS) Manager
- Add a website which Site name is Default Web Site
- Physical path is the HMDemo path (eg. D:\HMDemo)
- Make sure the managed Pipeline Mode of Default Web Site application pool is Integrated
- Copy the scripts folder to D:\HMDemo
- Copy the HMModule.dll and HMHandler.dll to D:\HMDemo\bin\
- Add IIS_USRS full control to Default Web Site
- Run ConfigModules.ps1
- Default Web Site --> Handler Mappings Edit Feature Permissions --> Check “Excute”
- Default Web Site
- Run Windows PowerShell as Administrator
- Input Set-ExecutionPolicy RemoteSigned and press <Enter>
- Press <Y>
- Close Windows PowerShell
- Run Windows PowerShell Modules as Administrator
Build IIS
Unlock Web Global Modules
In Windows Server 2008 r2
$modules = Get-WebGlobalModule $modules $count = $modules.Count for($i=1;$i -le $count; $i++)
{
C:\Windows\System32\inetsrv\appcmd.exe set module $modules[$i].Name /lockItem:true
}
In Windows Server 2012 r2
- Run Windows
PowerShell as Administrator - Run the ConfigModules.ps1"
Get Web Global Modules"
$modules = Get-WebGlobalModule $modules $count = $modules.Count for($i=1;$i -le $count; $i++)
{
C:\Windows\System32\inetsrv\appcmd.exe set module $modules[$i].Name /lockItem:true
}
Test
Logon and the planned results as below

IIS Handler and Module探索的更多相关文章
- IIS URL Rewrite Module防盗链规则配置方法
IIS版本:IIS 7.5 URL Rewrite组件:IIS URL Rewrite Module(http://www.iis.net/downloads/microsoft/url-rewrit ...
- IIS URL Rewrite Module的防盗链规则设置
IIS版本:IIS 7.5 URL Rewrite组件:IIS URL Rewrite Module(http://www.iis.net/downloads/microsoft/url-rewrit ...
- 使用微软 URL Rewrite Module 开启IIS伪静态
原文 使用微软 URL Rewrite Module 开启IIS伪静态 在IIS5和IIS6时代,我们使用URL REWRITING可实现URL重写,使得WEB程序实现伪静态,但默认情况下只能实现.A ...
- IIS FTP Server Anonymous Writeable Reinforcement, WEBDAV Anonymous Writeable Reinforcement(undone)
目录 . 引言 . IIS 6.0 FTP匿名登录.匿名可写加固 . IIS 7.0 FTP匿名登录.匿名可写加固 . IIS >= 7.5 FTP匿名登录.匿名可写加固 . IIS 6.0 A ...
- IIS Express 及 vs2008下使用IIS Express
介绍 IIS Express 开发 ASP.NET 的应用程序是我的主要工作.当然我会选择最适合的开发环境.客户多属于企业用户,我的开发的选择,多半是 ASP.NET Web Application ...
- IIS 7.0, ASP.NET, pipelines, modules, handlers, and preconditions
1.0 What is the IIS Pipeline Conceptually, the IIS pipeline is a state machine with the following st ...
- 在IIS上发布并运行ASP.NET Core
英文原文地址:https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Application ...
- ASP.NET IIS Registration Tool (Aspnet_regiis.exe)
IIS Version Special cases for 32-bit versions of Aspnet_regiis.exe 6.0 You can run the 32-bit versio ...
- IIS URL Rewriting and ASP.NET Routing
IIS URL Rewriting and ASP.NET Routing With the release of the URL Rewrite Module for IIS and the inc ...
随机推荐
- Mybatis 动态获取字段值(不需要创建javabean)
最近遇到一个这样的需求,如下: 用户可以通过自定义模板选择需要查询显示的字段,需要动态查询显示. 前提:数据库有一张表,里面有400多个字段. 要求:用户在前台可以自定义模板,一个模板可能对应x个字段 ...
- [记录]java.math.biginteger cannot be cast to java.lang.long
可以直接使用BigInteger类型进行接收, BigInteger id = (BigInteger)QueryRunner(conn,"SELECT LAST_INSERT_ID&quo ...
- confirm的用法
内容换行:第一种方法:var str = "aaaaa\\n11111";confirm(str.replace("\\n","\n")); ...
- JS+CSS简单实现DIV遮罩层显示隐藏【转藏】
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- php 文件缓存
http://www.oschina.net/code/snippet_162279_6098 <?php class cache { private static $_instan ...
- (八)Hibernate 映射关系
所有项目导入对应的hibernate的jar包.mysql的jar包和添加每次都需要用到的HibernateUtil.java 第一节:Hibernate 一对一映射关系实现 1,按照主键映射: 2, ...
- ###STL学习--标准模板库
下面进行STL的学习.希望能了解标准模板库中的常用容器,迭代器,可以自由运用STL以提高编写代码的效率.下面的内容我想以知识点为总结,不再像<Effective C++>那样以章节进行总结 ...
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记1 IOS8概述
首先感谢网易公开课和SwiftV课堂的朋友们辛苦翻译,这个系列是我学习斯坦福IOS8公开课的个人心得体会和笔记,希望能给大家带来启发. 首先我们要知道IOS系统中的结构情况,从贴近硬件的底层到贴近用户 ...
- bzoj2287:[POJ Challenge]消失之物
思路:首先先背包预处理出f[x]表示所有物品背出体积为x的方案数.然后统计答案,利用dp. C[i][j]表示不用物品i,组成体积j的方案数. 转移公式:C[i][j]=f[j]-C[i][j-w[i ...
- JS 版的pnp in_array($str,$arr)
var a = Array(1,2,3,4,5); function in_array(search,array){ for(var i in array){ if(array[i]==search) ...