如何在向其端口发出HTTP请求时启动Windows Web服务?

时间:2012-07-17 16:48:59

标签: c# http sockets proxy

我在Windows服务器上运行TeamCity。它是一个运行TomCat的基于Java的构建服务,使用了大量的300MB。我偶尔只使用它,因此它不值得一直运行,当其他服务(网站)可以使用它时会耗尽内存。

目前,当我需要使用它时,我有一个简单的受保护网页来启动和停止服务。

我还实现了一个脚本,以查看服务暂时没有进行任何构建,并自动关闭服务。

因此,当服务关闭时,转到TeamCity端口(9090)会导致无响应。我希望能够访问该端口,然后某些东西会自动启动该服务,然后我可以再次访问它。

是否可以让一个'中间人'应用程序/代理/数据包嗅探器侦听端口9090,如果服务没有运行,启动服务并将所有请求转发给该服务?

我更愿意将其作为一个http数据包嗅探器实现,以避免代理从A到B的所有请求的任何性能问题。

如果有人能指出我的方向很好,我计划在C#中实现一些事情。如果需要的话。

2 个答案:

答案 0 :(得分:0)

我认为你自己的想法非常接近一个足够好的解决方案:每当你关闭服务时,让一个'中间人'应用程序监听端口9090,并且对于传入活动它应该启动服务并退出,释放9090对于TeamCity ......

答案 1 :(得分:0)

我想我最后会提到我是如何解决这个问题的。

我创建了一个子域,它运行一些代码来检查TeamCity服务是否正在运行。如果它尚未启动,则启动该服务,然后重定向到TeamCity站点端口。如果它已经启动它只是重定向。如果一段时间内没有启动任何构建,则服务会自动关闭,释放内存。