Вопрос
Когда я добавляю обработчик 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.