Create Handler & Module

  1. Run the Visual Studio
  2. Create a Class Library “HMHandler” --> Change the class to HMHandler.cs
  3. Create a Class Library “HMModule” --> Change the class to HMModule.cs
  4. 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>
  1. Build the solution
  2. Run the Internet Information Services (IIS) Manager
  3. Add a website which Site name is Default Web Site
  4. Physical path is the HMDemo path (eg. D:\HMDemo)
  5. Make sure the managed Pipeline Mode of Default Web Site application pool is Integrated
  6. Copy the scripts folder to D:\HMDemo
  7. Copy the HMModule.dll and HMHandler.dll to D:\HMDemo\bin\
  8. Add IIS_USRS full control to Default Web Site
  9. Run ConfigModules.ps1
  10. Default Web Site --> Handler Mappings Edit Feature Permissions --> Check “Excute”
  11. Default Web Site
  12. Run Windows PowerShell as Administrator
  13. Input Set-ExecutionPolicy RemoteSigned and press <Enter>
  14. Press <Y>
  15. Close Windows PowerShell
  16. 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

  1. Run Windows
    PowerShell
    as Administrator
  2. 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探索的更多相关文章

  1. IIS URL Rewrite Module防盗链规则配置方法

    IIS版本:IIS 7.5 URL Rewrite组件:IIS URL Rewrite Module(http://www.iis.net/downloads/microsoft/url-rewrit ...

  2. IIS URL Rewrite Module的防盗链规则设置

    IIS版本:IIS 7.5 URL Rewrite组件:IIS URL Rewrite Module(http://www.iis.net/downloads/microsoft/url-rewrit ...

  3. 使用微软 URL Rewrite Module 开启IIS伪静态

    原文 使用微软 URL Rewrite Module 开启IIS伪静态 在IIS5和IIS6时代,我们使用URL REWRITING可实现URL重写,使得WEB程序实现伪静态,但默认情况下只能实现.A ...

  4. 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 ...

  5. IIS Express 及 vs2008下使用IIS Express

    介绍 IIS Express 开发 ASP.NET 的应用程序是我的主要工作.当然我会选择最适合的开发环境.客户多属于企业用户,我的开发的选择,多半是 ASP.NET Web Application ...

  6. 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 ...

  7. 在IIS上发布并运行ASP.NET Core

    英文原文地址:https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Application ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. Android_gridView_LIstener_examle

    layout.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...

  2. mapping 详解3(Meta-Fields)

    文档标识相关元数据字段 _index 当执行多索引查询时,可能需要添加特定的一些与文档有关联的索引的子句. _index 字段可以用在 term.terms 查询,聚合(aggregations)操作 ...

  3. linux解压命令笔记

    转载:http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html .tar 解包:tar xvf FileName.tar打包:tar ...

  4. JSON对象和string的相互转换

    JSON.stringify(obj) 将JSON转为字符串. JSON.parse(string) 将字符串转为JSON格式.

  5. Lodop实现web套打

    WEB套打可选方案不多,理想的更少,利用免费控件Lodop+JavaScript实现精确套打,算是较为经典的选择.这种方案其实比较简单,利用一个htm文件就可以实现模板设计过程,几乎是“空手套”式的开 ...

  6. 多个html编辑器在同一页面加载

    http://127.0.0.1:3750/test.aspx 下载:ckfinder,ckeditor编辑器 <script type="text/javascript" ...

  7. 学习笔记1_Day09_Servlet

    生命周期方法: l  void init(ServletConfig):出生之后(1次): l  void service(ServletRequest request, ServletRespons ...

  8. xadmin学习笔记(二)——改造Django教程实例(1)

    前言 xadmin是基于Python和Django的管理框架,想要能够熟练使用,学习Django是必须的.在学习Django的过程中,不妨用xadmin来验证下新的效果是怎样的.本文就是在学习Djan ...

  9. 第十三篇、jQuery Mobile

    API-->搜索data 0.page data-transition="slide" // 页面切换效果 data-position="fixed" / ...

  10. Java线程间通信--生产者消费者

    class ProducerConsumerDemo {    public static void main(String[] args)     {        Resource r = new ...