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