如何从自定义HTTP模块制作独立的HTTP服务器?

时间:2010-04-08 12:48:04

标签: c# http tcp httpmodule

如何从您的自定义HTTP Module支持TCP \ HTTP服务器,例如能够在任何其他HTTP服务器附近运行(在同一端口上,只需要一些URL命名空间,如www.example.com/myModule / blabla?id = anyID,并没有像我的其他服务器那样使用PHP的apache HTTP服务器(所以我可以称之为www.example.com/myApach/blabla?id=anyID)和我的其他基于C \ C ++的服务器服务器。)?

所以我创建了我的模块作为TCP \ HTTP服务器 - 我给出了调用URL - 它给了我响应。

Tooday我的ASP.NET服务器hendels托管我的模块。

我想摆脱那个ASP.NET服务器 - 让我的模块独立应用。

我需要CODE示例......)

4 个答案:

答案 0 :(得分:1)

简单回答:你做不到。 HttpModule依赖于ASP.NET框架,而ASP.NET框架又依赖于.NET Framework,而.NET Framework又需要一个单独的Web服务器软件包,如IIS或Apache(需要大量重新配置)。

答案 1 :(得分:0)

  

在任何其他HTTP服务器附近运行   (在同一个端口上,只需要一些URL   命名空间

那是不可能的。您不能在同一服务器上的同一端口上拥有两个不同的HTTP服务器。您可以进行代理设置,其中一个Web服务器接收所有请求,并将其中一些请求转发到另一个端口(甚至是不同服务器)上运行的另一个Web服务器。例如。您可以让Apache处理大部分请求本身,然后只转发针对您的Web应用程序的请求。在“反向代理”配置中查看mod_proxy

答案 2 :(得分:0)

我的公司制作了“Neokernel Web Server”(http://www.neokernel.com),它允许您在没有IIS的情况下从您自己的.NET应用程序中托管ASP.NET Web应用程序。查看“demos / C#Projects”文件夹中的“Bootstrapping”演示,了解如何在应用程序中包含Neokernel程序集并从应用程序代码中启动或停止它。

关于端口80上的流量共享,Adam Maras在上面的回答中是正确的 - 只有一个应用程序可以使用给定的TCP服务器端口。

最新版本的Windows通过http.sys处理此问题 - 当您使用Microsoft的web.config标准注册各种WCF,ASP.NET网站和处理程序模块时,http.sys会将传入的req(在端口80上)重定向到其中一个注册处理程序(或IIS或其他应用程序)。如果您在端口80上运行另一个应用程序,并且它在http.sys之前启动,那么它将不会发生这种重定向,因此它会抓取服务器套接字而不是http.sys

答案 3 :(得分:0)

我知道Windows(我也相信linux)只允许您在一个特定端口上监听一个进程。因此,您希望最好的方法是将模块插入您的其他Web服务器以传递请求。因为你已经需要插入一个单独的模块......