【问题标题】:HttpHandler 101 FAILHttpHandler 101 失败
【发布时间】:2010-10-02 09:32:23
【问题描述】:

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

【问题讨论】:

    标签: asp.net httphandler


    【解决方案1】:

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

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

    然后你可以直接在web.config中声明你的handler:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-02
          • 2012-12-24
          • 2019-08-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多