Как развернуть код IHttpHandler в IIS

У меня есть простой обработчик, написанный на C# с IHttpHandler. Как я могу заставить его работать на IIS? Я следовал учебному пособию в http://mvolo.com/developing-iis7-modules-and-handlers-with-the-net-framework/ но он не работал для меня.

В IIS7 мои шаги:

  1. Я создаю новую веб-страницу под названием "SAMPLE"

  2. Из HandleMappings я нажал "Добавить управляемый обработчик"

  3. Я заполняю столбцы -> Путь запроса: *.tm Тип: SampleServer.MyHandler Имя: MyHandler

  4. Попробуйте открыть localhost/SampleServer.tm/

Я получил эту ошибку: недопустимый модуль "ManagedPipelineHandler" в списке модулей MyHandler. Код ошибки: 0x8007000d

Файл Web.с onfig Создан автоматически:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="MyHandler" path="*.tm" verb="*" type="SampleServer.MyHandler" resourceType="Unspecified" preCondition="integratedMode" />
        </handlers>
    </system.webServer>
</configuration>

Мой файл handler.cs:

namespace SampleServer
{
    class MyHandler : IHttpHandler
    {
        public bool IsReusable
        {
            get { return false; }
        }

        public void ProcessRequest(HttpContext context)
        {
            DateTime dt = DateTime.Now;
            context.Response.Write(String.Format("<h1>{0}</h1>", dt.ToLongTimeString()));
        }
    }
}

1 ответ

Решение

Наконец-то нашел ответ. Это потому, что я удаляю свой предыдущий IIS и устанавливаю IIS7. IIS нуждается в настройке библиотеки.NET.

Запустите эту команду на cmd:

    "%windir%\Microsoft.NET\Framework\"YOUR .NET VERSION"\aspnet_regiis.exe" -i

И затем, если версия.NET вашего веб-сайта ниже, чем версия вашего *.dll-файла, измените его из пула приложений. После этого все работает хорошо.

Другие вопросы по тегам