Как сделать из своего Custom HTTP Module автономный HTTP-сервер? - PullRequest
1 голос
/ 08 апреля 2010

Как сделать из своего пользовательского модуля HTTP автономный TCP \ HTTP-сервер, способный, например, работать рядом с любым другим HTTP-сервером (на том же порту, просто используя некоторое пространство имен URL, например www.example. com / myModule / blabla? id = anyID, и не был связан с другими моими серверами, такими как HTTP-сервер Apache с PHP (так что я могу назвать его www.example.com/myApach/blabla?id=anyID) и с другим моим C \ C ++ серверы.)?

Итак, я создал свой модуль как сервер TCP \ HTTP - я даю URL вызова - он дает мне ответ.

Сегодня мой сервер ASP.NET хранит мой модуль.

Я хочу избавиться от этого сервера ASP.NET - сделать приложение моего модуля автономным.

Мне нужны примеры CODE ...)

Ответы [ 4 ]

1 голос
/ 08 апреля 2010

Простой ответ: вы не можете. HttpModule s зависят от платформы ASP.NET, которая, в свою очередь, зависит от .NET Framework, которая, в свою очередь, требует отдельного пакета веб-сервера, такого как IIS или Apache (с большим количеством перенастройки).

0 голосов
/ 19 мая 2010

Я знаю, что Windows (и я считаю, что linux) позволяет только одному процессу прослушивать определенный порт.Поэтому лучшее, на что вы можете надеяться - это подключить module к другому веб-серверу для передачи запроса.А так как вам уже нужно подключить отдельный модуль ...

0 голосов
/ 19 мая 2010

Моя компания создает "Neokernel Web Server" (http://www.neokernel.com)), который позволяет вам размещать веб-приложения ASP.NET из вашего собственного .NET-приложения без IIS. Посмотрите на демонстрацию "Bootstrapping" в разделе "demos / C # Projects "папка для примера источника, показывающая, как включить сборку Neokernel в ваше приложение и запустить или остановить его из кода приложения.

Что касается разделения трафика через порт 80, Адам Марас прав в своем ответе выше - только одно приложение может использовать данный порт TCP-сервера.

Последние версии Windows обрабатывают это через http.sys - когда вы регистрируете различные веб-сайты WCF, ASP.NET и модули-обработчики, используя стандарты web.config от Microsoft, http.sys перенаправляет входящий запрос (на порт 80) на один из зарегистрированных обработчиков (или IIS или другое приложение). Это перенаправление не произойдет, если вы запустите другое приложение на порту 80, и оно запускается раньше, чем http.sys, поэтому вместо http.sys

захватывает сокет сервера
0 голосов
/ 08 апреля 2010

работает рядом с любым другим HTTP-сервером (на том же порту, просто взяв какой-то URL Пространство имен

Это просто невозможно. Вы не можете иметь два разных HTTP-сервера на одном и том же порту на одном сервере. Вы можете настроить прокси, где один веб-сервер получает все запросы и перенаправляет некоторые из них на другой веб-сервер, работающий на другом порту (или даже на другом сервере). Например. Apache может обрабатывать большинство запросов сам, а затем пересылать только те запросы, которые направлены на ваше веб-приложение. Посмотрите на mod_proxy , в конфигурации "обратный прокси".

...