有没有办法确定IS或网站已停止?

时间:2012-02-22 00:05:46

标签: c# .net wcf appfabric

我有一个WCF服务,我在AppFabric上使用IIS 7.5和Windows 2008进行托管。该服务按照建议设置为自动启动。 当服务启动时,它进入一个永不停止的while循环,请记住这是所需的行为。 while循环应该处理一些我不知道什么时候可用的数据。

问题是当我关闭网站或IIS时,服务一直在运行。所以我的问题是:
有没有办法确定IIS或网站已停止?
有没有更好的方法来实现这种永无止境的行为?

希望这里有足够的信息。

2 个答案:

答案 0 :(得分:0)

好的,所以你有一个无限的轮询循环运行。这种设计很有意义,尽管它很不寻常。

我建议你启动一个单独的线程进行轮询。您的线程代码应如下所示:

void ThreadProc() {
 try {
  while(true) { ... }
 }
 catch (ThreadAbortException) {
  //AppDomain shutdown
 }
}

当关闭所有线程时将被中止。这是检测关机的技巧。

像这样启动线程:

new Thread(ThreadProc) { IsBackground = true }

答案 1 :(得分:0)

关于网站状态检测问题:如果您知道网站名称,则可以使用Microsoft.Web.Administration API确定网站是否已启动。 Learn IIS website

提供了一些很好的例子

然而,我在这里第二个关注为什么你使用无限循环......