Вопрос

Когда я добавляю обработчик 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, но я понятия не имею об этом.

Это было полезно?

Решение

Я полагаю, вы используете проект веб-сайта в отличие от проекта веб-приложения. В этом случае вам нужно поместить код за файлом вашего обработчика (Handler.cs) в специальную папку App_Code. Файл разметки (Handler.ashx) может находиться в корне вашего сайта:

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

Затем вы можете напрямую объявить свой обработчик в web.config:

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

Другие советы

Когда обработчик является классом в моем каталоге App_Code, у меня работает следующее:

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

(я добавил только обработчики для целых префиксов, таких как " *. test ").

По умолчанию объект asp.net Pagerhandlerfactory будет обрабатывать все запросы ресурсов .aspx.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top