2010-04-08 36 views
1

如何從你的自定義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++的服務器。)?如何從您的自定義HTTP模塊創建一個獨立的HTTP服務器?

所以我創建了我的模塊作爲TCP \ HTTP服務器 - 我給呼叫URL - 它給了我回應。

Tooday我的ASP.NET服務器hendels託管我的模塊。

我想擺脫那個ASP.NET服務器 - 讓我的模塊獨立應用程序。

我需要CODE的例子...)

+0

我需要更多信息 – Lazarus 2010-04-08 12:53:28

回答

1

簡單的答案:你不能。 HttpModules依賴於ASP.NET框架,而ASP.NET框架又依賴於.NET Framework,而.NET Framework則需要一個單獨的Web服務器軟件包,如IIS或Apache(有大量的重新配置)。

+0

我們可以託管WCF服務獨立,爲什麼我們不能託管HTTP模塊? – Rella 2010-04-08 13:21:01

+0

因爲WCF服務和'HttpModules'構建在完全不同的子體系結構上。他們根本不是同一種技術。 – 2010-04-08 17:27:50

0

接近任何其他HTTP服務器 (同一端口的乳寧,只是採取一些URL 命名空間

這是不可能的。你不能有相同的端口上兩個不同的HTTP服務器你可以有一個代理設置,一個Web服務器接收所有的請求,並將其中的一部分轉發到另一個運行在不同端口上的Web服務器(或者甚至是不同的服務器)。例如,你可以讓Apache處理大部分請求自己,然後只轉髮針對您的Web應用程序的請求。請參閱mod_proxy,在「反向代理」配置ñ。

+0

Dosnt窗口默認情況下是否這樣做?至少對於C++ HTTP服務器來說,它似乎會做這樣的事情... Google HTTP.SYS並閱讀我的http:// stackoverflow的這個主題。com/questions/2589588/how-to-register-your-application-into-with-http-sys – Rella 2010-04-08 13:27:43

+0

當然,我們可以在同一端口上承載無限數量的WCF服務......等等。 – Rella 2010-04-08 13:28:40

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處理這個問題 - 當你使用微軟的web.config標準註冊你的各種WCF,ASP.NET網站和處理程序模塊時,http.sys將重定向傳入的req(在端口80上)到其中一個註冊處理程序(或IIS或其他應用程序)。如果你在端口80上運行另一個應用程序,它不會發生這種重定向,並且它在http.sys之前啓動,因此它抓住服務器套接字而不是http.sys。

0

我知道Windows(我也相信linux)只允許您讓一個進程在特定的端口上進行偵聽。所以你所希望的最好的方法是將模塊插入到其他Web服務器以傳遞請求。由於您已經必須插入一個單獨的模塊...