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. PeopleReady--办公学习类App产品

    PeopleReady是能使人(公司或组织里的员工)快速Ready(经验+知识)的学习系统.对员工的好处是:- 可以迅速Ready,尽快符合岗位要求,尽快有Performance,尽快对公司有价值,从 ...

  2. MySQL - 日志管理

    在 MySQL 中,有 4 种不同的日志,分别是错误日志.二进制日志.查询日志和慢查询日志. 错误日志 错误日志记录了 MySQL 启动和停止时以及服务器在运行过程中发生严重错误时的相关信息. 查看错 ...

  3. MySQL支持多种存储引擎

    MySQL的强大之处在于它的插件式存储引擎,我们可以基于表的特点使用不同的存储引擎,从而达到最好的性能. MySQL有多种存储引擎:MyISAM.InnoDB.MERGE.MEMORY(HEAP).B ...

  4. 第十二篇、高度自适应的textView

    高度根据输入内容变化输入框,我们在很多的应用上都可以见到,如微信.QQ聊天,QQ空间评论等等,该输入框可以用xib,纯代码编写,但是个人觉得纯代码编写用起来更加方便一些. 1.使用自定义的UIView ...

  5. asp.net 异步处理

    #region 异步测试 //委托 public delegate void PrintDelegate(string s); [WebMethod] public string yibu() { / ...

  6. java多线程之停止线程

    /*1.让各个对象或类相互灵活交流2.两个线程都冻结了,就不能唤醒了,因为根据代码要一个线程活着才能执行唤醒操作,就像玩木游戏3.中断状态就是冻结状态4.当主线程退出的时候,里面的两个线程都处于冻结状 ...

  7. 【制作镜像Win*】系统配置

    向livibirt.xml插入Line 6-13所示代码,即加入两个virtio-serial设备: <!--vnc方式登录,端口号自动分配,自动加1,可以通过virsh vncdisplay来 ...

  8. 学习C++ Primer 的个人理解(十)

    标准库没有给每个容器都定义成员函数来实现 查找,替换等操作.而是定义了一组泛型算法,他们可以用于不同类型的元素或多种容器类型. 迭代器令算法不依赖与容器 算法永远不会执行容器的操作 算法本身不会执行容 ...

  9. C++学习之路,漫长而遥远

    一.C/C++语言 如果你的基础很差, 建议不要一开始就学C++语言,从C开始学起,对程序有个初步的认识,循序渐进.C语言的书嘛,先买一本 300 页以内的,把书中的每一个例子都通过键盘敲打进去到 V ...

  10. Headfirst设计模式的C++实现——外观模式(Facade)

    light.h #ifndef _LIGHT_H_ #define _LIGHT_H_ #include <iostream> class LIGHT { public: void dim ...