HttpHandler 101失败

时间:2009-01-20 06:51:04

标签: asp.net httphandler

当我添加HTTP处理程序时:

<add verb="*" path="*test.aspx" type="Handler"/>

上课:

using System;
using System.Web;

public class Handler : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Write("Hello World");
    }

    public bool IsReusable
    {
        get { return false; }
    }

}

我的ASP.NET应用程序因“无法加载类型'处理程序'错误而死亡。”当我尝试访问http://localhost:port/mysite/this-is-a-test.aspx时。

我想也许这是一个命名空间问题,所以我尝试了以下内容,但得到了相同的“无法加载类型'Test.Handler'。”错误。

<add verb="*" path="*test.aspx" type="Test.Handler, Test"/>

上课:

using System;
using System.Web;

namespace Test
{

    public class Handler : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            context.Response.Write("Hello World");
        }

        public bool IsReusable
        {
            get { return false; }
        }

    }

}

我知道我在使用ASP.NET时已经生锈了,但我对这个问题一无所知。

3 个答案:

答案 0 :(得分:12)

我猜你正在使用一个与Web应用程序项目形成对比的网站项目。在这种情况下,您需要将处理程序(Handler.cs)的代码置于特殊的App_Code文件夹中。标记文件(Handler.ashx)可能位于您网站的根目录:

<%@ WebHandler Language="C#" Class="Handler" CodeBehind="Handler.cs" %>

然后你可以直接在web.config中声明你的处理程序:

<add verb="*" path="*test.aspx" type="Handler"/>

答案 1 :(得分:0)

当Handler是我的App_Code目录中的一个类时,以下内容适用于我:

    <add verb="*" path="*test.aspx" type="Test.Handler,__Code"/>

(我只添加了像“* .test”这样的整个前缀的处理程序。)

答案 2 :(得分:0)

默认情况下,asp.net Pagerhandlerfactory对象将处理所有.aspx资源请求。