惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
L
LINUX DO - 最新话题
T
Troy Hunt's Blog
博客园_首页
量子位
Jina AI
Jina AI
S
SegmentFault 最新的问题
IT之家
IT之家
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
N
News | PayPal Newsroom
P
Proofpoint News Feed
Cyberwarzone
Cyberwarzone
S
Securelist
Google Online Security Blog
Google Online Security Blog
P
Privacy International News Feed
博客园 - Franky
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
C
Cisco Blogs
V
Vulnerabilities – Threatpost
腾讯CDC
The Hacker News
The Hacker News
K
Kaspersky official blog
C
Cyber Attacks, Cyber Crime and Cyber Security
雷峰网
雷峰网
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Security Archives - TechRepublic
Security Archives - TechRepublic
A
About on SuperTechFans
Webroot Blog
Webroot Blog
The Register - Security
The Register - Security
Scott Helme
Scott Helme
B
Blog
Security Latest
Security Latest
Last Week in AI
Last Week in AI
Google DeepMind News
Google DeepMind News
W
WeLiveSecurity
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tenable Blog
Blog — PlanetScale
Blog — PlanetScale
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Schneier on Security

博客园 - Laeb

ASP.NET Web 页面语法概览 ASP.NET Web 页面中的新事物 渐增的许可 介绍 ASP.NET Web 页面 管理工具 ASP.NET Web 页面概览 检测何时需要更改安全策略 安全策略管理的概览 System.Net 类的最佳习惯 异常处理的最佳习惯 面向世界应用程序开发的最佳习惯 使用 ASP.NET 所创建的 XML Web 服务的设计指南 为并发执行而创建应用程序与组件的指南 ASP.NET 控件与可访问 ASP.NET 中的可访问支持 实践:创建自定义 HTTP 模块 HTTP 模块介绍 实践:创建 HTTP 处理器工厂 实践:注册 HTTP 处理器
实践:创建同步 HTTP 处理器
Laeb · 2007-03-16 · via 博客园 - Laeb

本文说明了一个为 ASP.NET 应用程序中以 .sample 作为 URL 结尾的资源而完成同步请求处理的 HTTP 处理器代码。该代码如下所示:

  • HTTP 处理器类的代码。该类必须实现 ProcessRequest 方法和 IsReusable 属性。
  • 在 Web.config 文件中注册处理器并且映射到 .sample 文件扩展名的元素是必需的。
  • 如何在 Internet Information Services(IIS)中把 .sample 文件扩展名映射到 ASP.NET。

提示:ASP.NET Development Server 会在配置文件被改变并且包括新处理器的引用的时候服务于新资源的请求。如果要允许 IIS 为这些请求而提供服务,那么就请参考下面的步骤。

当用户所请求的资源是以 .sample 作为 URL 结尾的时候,Web 服务器就会把请求转送到 ASP.NET。然后 ASP.NET 会调用相应的 HTTP 处理器,从而返回一个回应。被返回的回应是通过处理器而被动态创建的;所以并不需要检测 .sample 扩展名是否存在。关于 ASP.NET 如何与 Web 服务器相互作用的更多信息,请参考:[ASP.NET 生命周期]。

创建自定义的 HelloWorldHandler HTTP 处理器类

  1. 在你的 Web 站点的 App_Code 目录中创建一个名为 HelloWorldHandler 的类。
  2. 添加下列代码到你的类文件中。
    using System.Web;
    public class HelloWorldHandler : IHttpHandler
    {
        public HelloWorldHandler()
        {
        }
        public void ProcessRequest(HttpContext context)
        {
            HttpRequest Request = context.Request;
            HttpResponse Response = context.Response;
            // 只要被请求的文件扩展名是 .sample,那么这个处理器始终都会被调用。
            // 并且不需要检测拥有这个扩展名的文件是否已经存在。
            Response.Write("<html>");
            Response.Write("<body>");
            Response.Write("<h1>Hello from a synchronous custom HTTP handler.</h1>");
            Response.Write("</body>");
            Response.Write("</html>");
        }
        public bool IsReusable
        {
            // 如果需要使用对象池,那么就可以在这里返回 true 值。
            // 这样做会把处理器保持在内存中。
            get { return false; }
        }
    }

    这个代码实现了 ProcessRequest 方法并且把一个字符串输出到了当前 HttpContext 对象的 Response 属性。

注册自定义的 HTTP 处理器

在你创建了自定义的 HTTP 处理器类之后,你还必须把它注册进应用程序的 Web.config 文件中。这样做允许 ASP.NET 在接收到以 .sample 作为 URL 结尾的资源请求的时候来查找相应的处理器。

在 Web.config 文件中注册一个自定义的 HTTP 处理器
  1. 添加一个 Web.config 文件到你的 Web 站点中,如果该文件不存在的话。
  2. 添加下列元素到你的 Web.config 文件中。
    <configuration>
        <system.web>
            <httpHandlers>
                <add verb="*" path="*.sample" 
                      type="HelloWorldHandler"/>
            </httpHandlers>
        </system.web>
    </configuration>

    这个代码会通过类名称来注册你的自定义处理器,并且把 .sample 文件扩展名映射到该处理器。

在 IIS 6.0 中配置 HTTP 处理器扩展

IIS 只会把特定文件类型的请求传递给 ASP.NET 服务。默认时,拥有文件扩展名(比如 .aspx、.ascx,.asmx)的文件已经在 IIS 6.0 中被映射到 ASP.NET ISAPI 扩展(Aspnet_isapi.dll)。但是,如果你需要 ASP.NET 处理自定义的 URL 扩展,那么你就必须在 IIS 中对这些扩展进行映射。关于更多信息,请参考:[ASP.NET 生命周期]。

在 IIS 6.0 中把 .sample 文件扩展名映射到 ASP.NET
  1. 打开 Internet Information Services(IIS)Manager。
  2. 右击你的应用程序名称,然后点击 Properties。

    提示:关于创建 ASP.NET 应用程序的指令,请参考:[实践:在 IIS 中创建并且配置本地 ASP.NET Web 站点]。

  3. 点击 Virtual Directory 标签,然后点击 Configuration。
  4. 在 Mapping 标签中,点击 Add。

    Add/Edit Application Extension Mapping 对话框被显示。

  5. 在 Executable 文本框中,输入或者浏览文件 Aspnet_isapi.dll。默认时,这个文件位于下列位置。
    %windows%\Microsoft.NET\Framework\版本号\

    提示:你也可以从其他映射中得到完整的路径和文件名,比如 .aspx 文件的映射。

  6. 在 Extension 文本框中,输入 .sample。
  7. 清除 Verify that file exists 复选框。
  8. 点击 OK 然后关闭 IIS Manager。

测试自定义的 HTTP 处理器

在你创建并且注册你的自定义 HTTP 处理器之后,你就可以通过发送文件扩展名是 .sample 的资源请求来对它进行测试。

测试你的自定义 HTTP 处理器
  • 在你的浏览器中,输入一个定位于你的 Web 应用程序并且以 .sample 作为结尾的 URL,比如:
    http://localhost/SampleApplication/test.sample

    然后,定义在 HelloWorldHandler 类中的文字就会被显示。