【问题标题】:How to embed an asp.net site in a windows service (or vice versa)如何在 Windows 服务中嵌入 asp.net 站点(反之亦然)
【发布时间】:2012-04-12 07:38:10
【问题描述】:
我正在构建一个 Windows 服务,但我想获取一些网页来控制一些设置、获取诊断等...
您将如何将一个 asp.net 网站和一个 windows 服务结合在一起?
我知道 WCF 可以自托管到任意进程中,但我可以用 asp.net 做同样的事情吗?
另一种选择是让我的服务逻辑在 asp.net 网站 application_start 方法中生成长时间运行的线程。但是,我没有获得内置功能的窗口服务,例如启动时自动启动。另一个问题可能是 IIS 可能决定回收该进程。此外,我的服务需要打开一个原始 tcp 套接字来接受连接。我可以在 IIS 中这样做吗?
谢谢
【问题讨论】:
标签:
asp.net
windows
service
tcp
self-hosting
【解决方案1】:
我认为最简单、最可靠的方法是让 ASP.NET 网站在 IIS 下与 Windows 服务在同一台服务器上运行。 Windows 服务可以承载 ASP.NET 应用程序可以访问的 WCF Web 服务。
【解决方案2】:
我会让您的 Windows 服务自托管 WCF“配置”服务。如果 UI 在同一台机器上,WCF 服务只需要在本地公开。如果 Windows 服务需要打开一个单独的原始套接字进行通信,这可能会在防火墙上打一个洞。
那么 ASP.NET UI 就可以像往常一样被 IIS 托管,并调用 WCF 方法来执行配置任务。
【解决方案3】:
您似乎真的需要这两样东西——托管在 IIS 中的 Web 应用程序和托管为 Windows 服务的 Windows 服务。
然后您可以通过某种方式在两者之间共享数据,例如通过数据库。