【发布时间】:2013-05-08 23:30:00
【问题描述】:
如何在 IIS 中托管 Windows 服务并保持该服务像在 Windows 上运行一样运行? 我可以使用 WCF 服务的某些功能吗?
我无法访问 Windows 本身,只能访问 IIS。在该服务中,我将创建一个线程,它会在预定时间处理一些数据。
【问题讨论】:
如何在 IIS 中托管 Windows 服务并保持该服务像在 Windows 上运行一样运行? 我可以使用 WCF 服务的某些功能吗?
我无法访问 Windows 本身,只能访问 IIS。在该服务中,我将创建一个线程,它会在预定时间处理一些数据。
【问题讨论】:
简而言之,你不能。
更详细的回答是有2个问题:
您可以通过这种方式获得部分解决方案:
剩下的唯一问题是:您真的需要避免使用 Windows 服务吗?你能找到一个地方来主持这项服务吗?在某些用例中,Windows 服务是最好的甚至是唯一的方法。
【讨论】:
简而言之,你不能。
但是,您可以使用运行状况监控 API,特别是心跳功能。见:
http://msdn.microsoft.com/en-us/library/system.web.management.webheartbeatevent.aspx
有关您需要实现的类的详细信息,以便在有工作要做时调用
这个关于 SO 的答案也可能有帮助 Understanding heartbeat in ASP.NET health monitoring
一旦你实现了一个 webheartbeatevent 派生类,你就可以检查你的数据库或者你想要检查的是否有工作要做。
恕我直言,更好的解决方案是完全废弃该服务并将系统重新设计为 100% 基于 Web,因为服务成为部署和维护的噩梦。我假设你现在正在发现......
【讨论】: