4

当我添加 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 越来越生疏了,但我对此一无所知。

4

3 回答 3

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"/>
于 2009-01-20T07:08:57.367 回答
0

当 Handler 是我的 App_Code 目录中的一个类时,以下对我有用:

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

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

于 2009-01-20T07:20:57.263 回答
0

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

于 2009-01-20T09:07:58.420 回答