Я пытаюсь создать веб-сервис, который манипулирует http-запросами POST и GET.
Вот пример:
public class CodebookHttpHandler: IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (context.Request.HttpMethod == "POST")
{
//DoHttpPostLogic();
}
else if (context.Request.HttpMethod == "GET")
{
//DoHttpGetLogic();
}
}
...
public void DoHttpPostLogic()
{
...
}
public void DoHttpGetLogic()
{
...
}
Мне нужно развернуть это, но я изо всех сил пытаюсь начать. Большинство онлайн-ссылок показывают создание веб-сайта, но на самом деле все, что я хочу сделать, - это отвечать при отправке HttpPost. Я не знаю, что добавить на сайт, просто хочу, чтобы этот код запускался.
Edit:
Я слежу за этим сайтом, так как именно это я и пытаюсь сделать.
У меня настроен веб-сайт, у меня есть код для обработчика в файле .cs, я отредактировал файл web.config, чтобы добавить обработчик для нужного мне расширения файла. Теперь я на шаге 3, где вы рассказываете IIS об этом расширении и сопоставляете его с ASP.NET. Также я использую IIS 7, поэтому интерфейс немного отличается от скриншотов. Это проблема, которую я имею:
1) Go to website
2) Go to handler mappings
3) Go Add Script Map
4) request path - put the extension I want to handle
5) Executable- it seems i am told to set aspnet_isapi.dll here. Maybe this is incorrect?
6) Give name
7) Hit OK button:
Добавить карту сценариев
Вы хотите разрешить это расширение ISAPI? Нажмите «Да», чтобы добавить расширение с записью «Разрешено» в список ограничений ISAPI и CGI или обновить существующую запись расширения на «Разрешено» в списке ограничений ISAPI и CGI.
Да Нет Отмена
8) Hit Yes
Добавить карту сценариев
Указанный модуль, требуемый этим обработчиком, отсутствует в списке модулей. Если вы добавляете отображение обработчика карты сценариев, IsapiModule или CgiModule должны быть в списке модулей.
OK
edit 2 : Только что выяснили, что этот управляемый обработчик как-то связан с обработчиками, наблюдаемыми в управляемом коде, сценарий map должен был помочь настроить исполняемый файл и отображение модулей для работы с модулями http. Поэтому я должен использовать опцию 1 - Добавить управляемый обработчик.
Я знаю, каков мой путь запроса для расширения файла ... и я знаю имя (могу называть его как угодно), поэтому это должно быть поле Тип, с которым я борюсь. В папке с приложениями (в IIS) до сих пор у меня просто есть MyHandler.cs и web.config (Конечно, также файл с расширением, для которого я пытаюсь создать обработчик!)
edit3: прогресс
Итак, теперь у меня есть код и настроенный web.config, который я тестирую, чтобы увидеть, могу ли я найти имя файла. Файл CustomExtension:
Ошибка HTTP 404.3 - не найдена
Запрашиваемая вами страница не может быть обработана из-за конфигурации расширения. Если страница представляет собой скрипт, добавьте обработчик . Если файл должен быть загружен, добавьте карту MIME.
Итак, в IIS7 я перехожу к отображению обработчиков и добавляю его. См. Этот пример MSDN, это именно то, что я пытаюсь следовать
Класс выглядит так:
using System.Web;
namespace HandlerAttempt2
{
public class MyHandler : IHttpHandler
{
public MyHandler()
{
//TODO: Add constructor logic here
}
public void ProcessRequest(HttpContext context)
{
var objResponse = context.Response;
objResponse.Write("<html><body><h1>It just worked");
objResponse.Write("</body></html>");
}
public bool IsReusable
{
get
{
return true;
}
}
}
}
Я добавляю обработчик следующим образом:
Путь запроса: *.whatever
Введите: MyHandler
(имя класса - это выглядит правильно, как в примере!)
Имя: whatever
Попробуйте снова перейти к пользовательскому файлу (он находится в пуле приложений как Integrated ):
HTTP-ошибка 500.21 - внутренняя ошибка сервера
У обработчика «что угодно» в списке модулей есть плохой модуль «ManagedPipelineHandler»
Попробуйте снова перейти к пользовательскому файлу (он находится в пуле приложений как CLASSIC ):
HTTP ошибка 404,17 - не найден
Запрошенное содержимое выглядит как сценарий и не будет обрабатываться обработчиком статических файлов.
Прямые вопросы
1) Должен ли сайт быть в КЛАССИЧЕСКОМ или ИНТЕГРИРОВАННОМ режиме? Я не нахожу ссылки на это в онлайн-материале, будь то.
2) Должен ли я скомпилировать MyHandler.cs в .dll, или я могу просто оставить его как .cs? Это должно быть в папке bin или просто где-нибудь в корне?